Compare commits

..

763 Commits

Author SHA1 Message Date
Bartek Kryza
83ea9256a1 Updated test cases documentation 2023-10-21 21:58:45 +02:00
Bartek Kryza
701b2c5113 Updated changelog 2023-10-21 21:55:59 +02:00
Bartek Kryza
0d237fec0a Added support for call comment directive to inject calls in comments (Fixes #196) 2023-10-21 21:47:26 +02:00
Bartek Kryza
4f43253c0d Fixed clang-tidy warnings 2023-10-21 18:37:53 +02:00
Bartek Kryza
097beb830f Updated test cases documentation 2023-10-21 17:27:11 +02:00
Bartek Kryza
03ac2121bc Updated docs 2023-10-21 17:24:48 +02:00
Bartek Kryza
7f595b1c54 Added handling of comment decorators (skip, note) in sequence diagram comments (#194) 2023-10-21 17:08:27 +02:00
Bartek Kryza
ddbfffbf23 Added message comments to json and mermaid generators 2023-10-17 22:21:48 +02:00
Bartek Kryza
dd940991dc Added message_comment_width config option 2023-10-16 22:10:44 +02:00
Bartek Kryza
1616f79ceb Improved sequence diagram message comment formatting 2023-10-16 21:48:02 +02:00
Bartek Kryza
03e8c867f4 Added generate_message_comments configuration option 2023-10-15 19:59:26 +02:00
Bartek Kryza
c4d3d61770 Updated changelog 2023-10-14 22:23:43 +02:00
Bartek Kryza
600d1847c8 Updated autocompletion docs (Fixes #193) 2023-10-14 22:21:25 +02:00
Bartek Kryza
46649e8084 Added bash autocomplete script 2023-10-14 22:19:19 +02:00
Bartek Kryza
621e417e0e Added zsh autocomplete script 2023-10-14 21:16:22 +02:00
Bartek Kryza
20e7cee28e Merge pull request #192 from bkryza/llvm-17-support 2023-10-13 20:02:58 +02:00
Bartek Kryza
a7b4efa80e Fix diagram generation using LLVM 17 (Fixes #190) 2023-10-13 18:46:30 +02:00
Bartek Kryza
e7d6c94a14 Removed redundant requirement for std::regex::multiline (Fixes #191) 2023-10-13 18:46:02 +02:00
Bartek Kryza
f339c34dd8 Enabled building against LLVM 17 2023-10-13 11:49:59 +02:00
Bartek Kryza
26abb71b4c Fix handling of compile_commands.json files with relative include paths (Fixes #189) 2023-10-12 17:08:25 +02:00
Bartek Kryza
8865a42ff0 Change std::same_as to std::is_same_v to maintain C++17 compatibility (Fixes #188) 2023-10-12 11:13:00 +02:00
Bartek Kryza
13a1012e96 Merge pull request #187 from bkryza/remove-package-dependencies-for-parent-packages 2023-10-10 23:31:04 +02:00
Bartek Kryza
92422624cb Skip dependencies between parent and child packages in package diagrams (Fixes #186) 2023-10-10 22:29:23 +02:00
Bartek Kryza
9d43281bdd Excluded package diagram relationships to rejected packages (#185) 2023-10-10 12:19:31 +02:00
Bartek Kryza
c398c6ffda Updated CHANGELOG 2023-10-09 17:56:27 +02:00
Bartek Kryza
1983a609a0 Merge pull request #184 from bkryza/add-title-property
Added 'title' diagram property
2023-10-09 16:05:36 +02:00
Bartek Kryza
8a6b497cc9 Added 'title' diagram property 2023-10-09 13:53:55 +02:00
Bartek Kryza
03bd5ada31 Removed unnecessary verbose logs 2023-10-09 11:18:32 +02:00
Bartek Kryza
fc6a63490b Merge pull request #183 from bkryza/handle-singleton-constructors
Handle singleton constructors
2023-10-08 18:14:52 +02:00
Bartek Kryza
fda50ae211 Dummy commit to trigger GitHub Actions 2023-10-08 17:43:00 +02:00
Bartek Kryza
747aca8597 Updated test cases documentation 2023-10-08 17:24:30 +02:00
Bartek Kryza
4ab0d29252 Make sure sequence diagram messages generated during static variable initialization are rendered only once 2023-10-08 16:55:42 +02:00
Bartek Kryza
9d08942a62 Merge pull request #180 from bkryza/v0.4.0
V0.4.0
2023-09-13 22:38:15 +02:00
Bartek Kryza
31ed8059e4 Updated test cases documentation 2023-09-13 21:30:16 +02:00
Bartek Kryza
7e3f7dcf06 Updated version to 0.4.0 2023-09-13 21:24:13 +02:00
Bartek Kryza
8eaa7869eb Merge pull request #179 from bkryza/add-mermaid-js
Add MermaidJS support.
2023-09-13 21:18:36 +02:00
Bartek Kryza
7b41295b07 Fixed building on MSVC 2023-09-13 20:48:31 +02:00
Bartek Kryza
509358b88f Updated test cases documentation 2023-09-13 20:07:10 +02:00
Bartek Kryza
7e22b0b682 Updated docs 2023-09-13 19:50:08 +02:00
Bartek Kryza
627c2e5cbe Fixed clanguml_diagrams target 2023-09-13 19:47:34 +02:00
Bartek Kryza
abd85534bc Updated docs with Mermaid docs 2023-09-13 18:54:23 +02:00
Bartek Kryza
70e7088823 Fixed clang-tidy warnings 2023-09-13 17:17:48 +02:00
Bartek Kryza
a99e987d3b Added mermaid test cases for include diagrams 2023-09-13 16:16:22 +02:00
Bartek Kryza
9872e2d225 Added mermaid test cases for package diagrams 2023-09-13 00:25:08 +02:00
Bartek Kryza
57af380dfa Added mermaid test cases for sequence diagrams 2023-09-12 23:05:09 +02:00
Bartek Kryza
59180efebf Fixed friend relationship generation in mermaid class diagram generator 2023-09-12 20:22:10 +02:00
Bartek Kryza
7c70ab69ad Fixed generation of test cases for diagram notes in mermaid class diagrams 2023-09-12 09:03:50 +02:00
Bartek Kryza
eb00cd21c3 Added mermaid test cases for class diagrams 2023-09-12 00:55:20 +02:00
Bartek Kryza
de5625a474 Fixed Mermaid SVG image width attribute 2023-09-10 13:26:58 +02:00
Bartek Kryza
bf29ceb2df Updated test cases documentation 2023-09-10 12:22:27 +02:00
Bartek Kryza
4a19c8ba23 Fixed mermaid verbatim directives handling 2023-09-10 12:14:41 +02:00
Bartek Kryza
9a6def801c Updated docs generation scripts 2023-09-10 00:03:47 +02:00
Bartek Kryza
2cc70bcd7e Fixed clang-tidy warnings 2023-09-09 20:46:29 +02:00
Bartek Kryza
ae40a3b184 Added mermaid generator cli option 2023-09-09 19:00:21 +02:00
Bartek Kryza
0a542a954b Added link generation in mermaid diagram generator 2023-09-09 18:42:04 +02:00
Bartek Kryza
cfc0a42320 Added initial support for MermaidJS include diagrams 2023-09-09 01:46:24 +02:00
Bartek Kryza
ee998e7a38 Added initial support for MermaidJS package diagrams 2023-09-09 00:18:24 +02:00
Bartek Kryza
32fda88852 Added initial support for MermaidJS sequence diagram 2023-09-08 00:30:19 +02:00
Bartek Kryza
084bb20ef7 First working version of Mermaid class diagram generator 2023-09-06 21:21:12 +02:00
Bartek Kryza
6822930a12 Initial mermaid class diagram support 2023-09-05 00:04:05 +02:00
Bartek Kryza
e8235805f8 Merge pull request #177 from bkryza/v0.3.9
v0.3.9
2023-09-02 17:46:29 +02:00
Bartek Kryza
e980816688 Updated docs toc 2023-09-02 16:27:24 +02:00
Bartek Kryza
4b3f3b9df3 Bumped version to 0.3.9 2023-09-02 16:17:56 +02:00
Bartek Kryza
a45fffdb67 Updated config schema to handle git revisions that parse as int 2023-09-02 16:12:00 +02:00
Bartek Kryza
85856426f3 Fixed message chain equality comparison 2023-09-02 12:59:10 +02:00
Bartek Kryza
de9f614cb0 Bumped version to 0.3.9 2023-09-01 21:05:36 +02:00
Bartek Kryza
9ebd5f24d5 Added missing Makefile install target (#175) 2023-09-01 14:19:30 +02:00
Bartek Kryza
87982ab114 Added missing concepts header (#175) 2023-09-01 13:40:34 +02:00
Bartek Kryza
3bf43bbc51 Merge pull request #174 from bkryza/add-from-to-sequence-diagram-conditions
Add from to sequence diagram conditions
2023-09-01 00:35:43 +02:00
Bartek Kryza
13aa1d7b43 Updated changelog 2023-09-01 00:09:04 +02:00
Bartek Kryza
0ecb798225 Updated clang-uml diagrams configs 2023-08-31 23:56:33 +02:00
Bartek Kryza
d044f7f17f Updated test cases documentation 2023-08-31 23:43:57 +02:00
Bartek Kryza
e830195fb7 Changed 'start_from' to simply 'from' in sequence diagrams 2023-08-31 23:26:53 +02:00
Bartek Kryza
51e0275db3 Added '--print-to' cli option to print all possible 'to' constraints in sequence diagrams 2023-08-31 22:28:25 +02:00
Bartek Kryza
1bd60b71ec Updated test cases documentation 2023-08-30 23:31:44 +02:00
Bartek Kryza
c472792ed8 Added 'to' sequence diagram generator for plantuml and json 2023-08-30 23:04:52 +02:00
Bartek Kryza
4bce1888bf Updated test cases documentation 2023-08-30 00:19:11 +02:00
Bartek Kryza
cdc3659c17 Added from_to test case with free functions 2023-08-30 00:01:59 +02:00
Bartek Kryza
08520af10c Extended t20034 test case with json generator test 2023-08-29 23:25:49 +02:00
Bartek Kryza
18bf00d1dd Fixed clang-tidy warnings 2023-08-27 22:20:54 +02:00
Bartek Kryza
519677a904 Fixed plantuml sequence diagram from_to entry points 2023-08-27 19:21:00 +02:00
Bartek Kryza
bd19fe5bfb Added from_to sequence diagram generator for json 2023-08-27 19:03:43 +02:00
Bartek Kryza
ae55b7c054 Added from_to sequence diagram generator for plantuml 2023-08-27 17:48:52 +02:00
Bartek Kryza
8a362c3c7a Added from_to test case 2023-08-26 23:48:38 +02:00
Bartek Kryza
d00ca79241 Add from_to config option 2023-08-13 18:52:33 +02:00
Bartek Kryza
ecf07b98c0 Updated test cases documentation 2023-08-06 21:50:20 +02:00
Bartek Kryza
fd06d93afb Fixed else if statement generation in sequence diagrams (Fixes #81) 2023-08-06 21:38:33 +02:00
Bartek Kryza
39be6014ed Updated internal UML configs 2023-08-06 12:35:17 +02:00
Bartek Kryza
ad7a1c2513 Merge pull request #172 from bkryza/add-skipping-redundant-deps
Add skipping redundant deps
2023-08-05 20:42:57 +02:00
Bartek Kryza
66612fb244 Updated CHANGELOG 2023-08-05 19:52:23 +02:00
Bartek Kryza
301d424fce Updated test cases documentation 2023-08-05 19:34:03 +02:00
Bartek Kryza
2e1013c12f Added option to skip redundant dependency relationships 2023-08-05 19:06:00 +02:00
Bartek Kryza
f6efb7941f Added option to exclude dependencies from template arguments (Fixes #141) 2023-08-02 00:04:11 +02:00
Bartek Kryza
c119a622fa Refactored generator inheritance hierarchy 2023-08-01 00:53:41 +02:00
Bartek Kryza
eded9f4292 Fixed template API warning 2023-07-24 19:41:04 +02:00
Bartek Kryza
9df58ca251 Merge pull request #171 from bkryza/add-configuration-file-validation
Add configuration file validation
2023-07-23 18:59:12 +02:00
Bartek Kryza
bcd32bfd41 Fixed building on MSVC 2023-07-23 18:34:03 +02:00
Bartek Kryza
366bb19912 Minor configuration schema updates 2023-07-23 17:07:22 +02:00
Bartek Kryza
18c4031047 Added schema validation command line flags 2023-07-23 13:12:17 +02:00
Bartek Kryza
ec0079d876 Added include/exclude filter specification to validator schema 2023-07-23 01:22:14 +02:00
Bartek Kryza
8dc0dacd3f Added initial configuration file schema validation 2023-07-22 18:39:07 +02:00
Bartek Kryza
97efbbb332 Added miroir yaml validation library 2023-07-22 18:36:37 +02:00
Bartek Kryza
561a2b16fd Merge pull request #170 from bkryza/v0.3.8
V0.3.8
2023-07-09 17:28:19 +02:00
Bartek Kryza
f50ea3f2c9 Updated clang-uml diagrams config 2023-07-09 16:57:21 +02:00
Bartek Kryza
ff5184da51 Fixed building on Fedora 38 2023-07-09 16:08:00 +02:00
Bartek Kryza
1e305ae4e2 Updated test cases documentation 2023-07-09 14:38:31 +02:00
Bartek Kryza
fb370adbfd Improved documentation 2023-07-09 12:58:03 +02:00
Bartek Kryza
a6b48a99fd Updated version to 0.3.8 2023-07-09 11:11:58 +02:00
Bartek Kryza
a10bf6ba9f Updated changelog 2023-07-09 11:07:53 +02:00
Bartek Kryza
0fd0d97786 Updated docs 2023-07-05 22:39:19 +02:00
Bartek Kryza
51e31b4bf7 Added option --print-start-from to list all possible 'start_from' values (fixes #94) 2023-07-05 22:12:01 +02:00
Bartek Kryza
e6202d4e5a Updated test cases documentation 2023-07-05 00:35:11 +02:00
Bartek Kryza
3bd8f7f7a8 Added option to include if and loop condition text in the diagram (fixes #162) 2023-07-05 00:31:34 +02:00
Bartek Kryza
a514532e51 Updated test cases documentation 2023-07-04 01:02:59 +02:00
Bartek Kryza
2104d930a8 Added option to enable rendering return types in sequence diagrams (fixes #93) 2023-07-04 00:50:47 +02:00
Bartek Kryza
d944a2cead Merge pull request #169 from bkryza/add-support-for-method-type-filter-in-sequence-diagrams
Add support for method type filter in sequence diagrams
2023-07-02 19:02:26 +02:00
Bartek Kryza
7576816f42 Updated test cases documentation 2023-07-02 18:31:33 +02:00
Bartek Kryza
ed88fcd39d Added sequence diagram model cleanup step to remove empty block statements 2023-07-02 18:17:06 +02:00
Bartek Kryza
9ada158828 Removed deprecated diagram configs from .clang-uml 2023-07-02 00:08:00 +02:00
Bartek Kryza
1d2f83127f Removed dead code 2023-07-01 23:54:09 +02:00
Bartek Kryza
fb3283d9c7 Updated test cases documentation 2023-07-01 23:48:45 +02:00
Bartek Kryza
e50a7b1846 Added callee_filter for including/excluding messages based on receiver type (#152) 2023-07-01 23:46:02 +02:00
Bartek Kryza
213483dd3b Added support for constructors and operators in sequence diagrams 2023-06-29 00:35:57 +02:00
Bartek Kryza
9e7b147244 Updated test cases documentation 2023-06-26 17:11:36 +02:00
Bartek Kryza
8d1bac0af4 Merge pull request #165 from bkryza/fix-method-links
Fix method links
2023-06-26 16:59:13 +02:00
Bartek Kryza
13ea67c1d8 Updated test cases documentation 2023-06-26 16:15:55 +02:00
Bartek Kryza
ed151f45e1 Fixed class method links in PlantUML diagrams 2023-06-26 16:15:10 +02:00
Bartek Kryza
ef753eaaff Merge pull request #163 from bkryza/add-doxygen-config
Add doxygen config
2023-06-25 18:45:24 +02:00
Bartek Kryza
46b8c29907 Update Doxygen docs for util namespace 2023-06-25 17:53:21 +02:00
Bartek Kryza
f1250e5780 Update Doxygen docs for sequence_diagram namespace 2023-06-25 12:48:32 +02:00
Bartek Kryza
c0b0af1bda Added Doxygen footer 2023-06-25 12:46:53 +02:00
Bartek Kryza
06045cee21 Updated docs 2023-06-24 21:57:55 +02:00
Bartek Kryza
c49517925e Update Doxygen docs for package_diagram namespace 2023-06-24 20:53:58 +02:00
Bartek Kryza
d594f79155 Update Doxygen docs for include_diagram namespace 2023-06-24 20:05:24 +02:00
Bartek Kryza
e1b7d67c71 Update Doxygen docs for decorators namespace 2023-06-24 18:22:10 +02:00
Bartek Kryza
935d25c8f4 Update Doxygen docs for class_diagram namespace 2023-06-24 17:24:06 +02:00
Bartek Kryza
627a9fe1a8 Disbaled dark mode in HTML Doxygen docs style 2023-06-24 17:23:27 +02:00
Bartek Kryza
6c6384e5fd Fixed clang-tidy warnings 2023-06-23 20:46:43 +02:00
Bartek Kryza
525b3f74a6 Updated docs links 2023-06-23 19:54:30 +02:00
Bartek Kryza
321fb177a9 Updated code for Doxygen documentation 2023-06-23 19:39:41 +02:00
Bartek Kryza
d8ef12d1c6 Added Doxygen documentation 2023-06-23 19:38:28 +02:00
Bartek Kryza
a39af67987 Fixed comment_parser option handling 2023-06-21 00:51:39 +02:00
Bartek Kryza
fb348fbaa1 Updated Doxygen docs 2023-06-19 23:25:31 +02:00
Bartek Kryza
6dd4089c8d Added initial Doxygen config 2023-06-18 23:41:48 +02:00
Bartek Kryza
7575147b71 Fixed @file doxygen links 2023-06-18 23:40:13 +02:00
Bartek Kryza
f424ed4c8c Added doxygen comments to common namespace 2023-06-18 20:23:44 +02:00
Bartek Kryza
da2cb63ab3 Added initial Doxygen config 2023-06-18 01:18:35 +02:00
Bartek Kryza
031235bf49 Updated troubleshooting 2023-06-16 16:46:37 +02:00
Bartek Kryza
d8aa955455 Merge pull request #159 from bkryza/add-progress-indicators
Add progress indicators
2023-06-15 22:54:14 +02:00
Bartek Kryza
94b1d51ca8 Fixed building on Windows 2023-06-15 22:28:29 +02:00
Bartek Kryza
8c4e48d511 Fixed clang-tidy warnings 2023-06-15 21:41:22 +02:00
Bartek Kryza
930ffb3468 Updated README 2023-06-15 21:07:12 +02:00
Bartek Kryza
408416020f Added --progress option for diagram progress indicators 2023-06-15 00:24:55 +02:00
Bartek Kryza
c387aba82e Added indicators library v2.3 2023-06-14 01:19:11 +02:00
Bartek Kryza
2cfff608d8 Updated README logo link 2023-06-14 00:22:21 +02:00
Bartek Kryza
3261838af8 Updated log levels 2023-06-12 20:29:11 +02:00
Bartek Kryza
01db5185b2 Updated test cases documentation 2023-06-12 00:55:11 +02:00
Bartek Kryza
43cc5cb49f Extended source_location with column and translation unit info 2023-06-12 00:42:52 +02:00
Bartek Kryza
84ec4733cc Merge pull request #156 from bkryza/v0.3.7
V0.3.7
2023-06-11 18:02:43 +02:00
Bartek Kryza
f963c10257 Updated conda packaging 2023-06-11 17:27:07 +02:00
Bartek Kryza
fbb16859f3 Added Windows installer build script 2023-06-11 17:14:00 +02:00
Bartek Kryza
3154cfd737 Releasing version 0.3.7 2023-06-11 12:50:51 +02:00
Bartek Kryza
6ff1618827 Updated README 2023-06-10 23:30:14 +02:00
Bartek Kryza
73b446f0f7 Merge pull request #155 from bkryza/add-config-regexp-support
Add config regexp support
2023-06-10 20:11:08 +02:00
Bartek Kryza
6d329dfdf6 Fixed diagram filters docs 2023-06-10 20:10:02 +02:00
Bartek Kryza
20fe6b1687 Updated test cases documentation 2023-06-10 19:02:06 +02:00
Bartek Kryza
01ef3dcbcc Updated diagram filters docs 2023-06-10 18:59:36 +02:00
Bartek Kryza
7564b6408f Updated troubleshooting 2023-06-10 17:30:42 +02:00
Bartek Kryza
dc74069dfd Added glob pattern support in paths filter 2023-06-10 16:21:55 +02:00
Bartek Kryza
ac01127436 Added OS details information in version help message 2023-06-09 22:35:03 +02:00
Bartek Kryza
0a4e2c8855 Fixed clang-tidy warnings 2023-06-09 01:31:29 +02:00
Bartek Kryza
7e416ffa97 Added regex support to dependencies and dependants filter 2023-06-09 00:44:25 +02:00
Bartek Kryza
658bceee4b Added regex support to context filter 2023-06-08 19:02:14 +02:00
Bartek Kryza
b0501d4bfb Added regex support to specializations filter 2023-06-08 14:08:31 +02:00
Bartek Kryza
b3b95efb65 Added regex support to parents filter 2023-06-08 00:03:50 +02:00
Bartek Kryza
ad2fc3f8a6 Added regex support to subclasses filter 2023-06-07 00:15:56 +02:00
Bartek Kryza
c7e61a586b Added regex support to namespaces filter 2023-06-06 21:31:50 +02:00
Bartek Kryza
399b7e1907 Added regex support to elements filter 2023-06-05 23:05:54 +02:00
Bartek Kryza
3430d5422a Added Ubuntu Lunar packaging spec 2023-06-05 22:44:27 +02:00
Bartek Kryza
6ffed4188c Merge pull request #153 from bkryza/fix-building-on-gcc13
Fix building on gcc13
2023-06-04 11:16:07 +02:00
Bartek Kryza
d3a5ba28ff Added Ubuntu Lunar package spec 2023-06-03 23:17:21 +02:00
Bartek Kryza
194164c8a4 Updated packaging warnings 2023-06-03 18:45:39 +02:00
Bartek Kryza
9f726e495c Updated packaging warnings 2023-06-03 18:36:02 +02:00
Bartek Kryza
12f129a6fe Upgraded spdlog to v1.11.0 2023-06-03 18:00:54 +02:00
Bartek Kryza
859758a1eb Merge pull request #151 from bkryza/add-method-groups-and-filters
Add method groups and filters
2023-06-02 22:52:43 +02:00
Bartek Kryza
a78839eecf Updated test cases documentation 2023-06-02 22:02:08 +02:00
Bartek Kryza
75d1daac31 Updated diagram filters test cases and docs 2023-06-02 21:50:51 +02:00
Bartek Kryza
e681d1a3cc Added custom method type destructor filter 2023-06-02 21:08:19 +02:00
Bartek Kryza
e40dc3a60c Added method type diagram filter (#145) 2023-06-02 01:06:22 +02:00
Bartek Kryza
e7f738c6dc Fixed handling properties of template methods (e.g. is_constructor) 2023-06-01 00:57:46 +02:00
Bartek Kryza
112f7cb806 Refactored apply_if helper functions 2023-06-01 00:06:32 +02:00
Bartek Kryza
ae44c2413b Fixed clang-tidy warnings 2023-05-31 23:07:40 +02:00
Bartek Kryza
0973289eb7 Added test case for unsorted and ungrouped class members and methods 2023-05-31 22:52:31 +02:00
Bartek Kryza
c87bd7d94b Added default class method and member grouping and sorting 2023-05-31 22:46:39 +02:00
Bartek Kryza
097f7a11ed Extended generation of method attributes (#142) 2023-05-30 18:51:13 +02:00
Bartek Kryza
75b900bf46 Extended troubleshooting section 2023-05-29 20:25:15 +02:00
Bartek Kryza
af7973d707 Merge pull request #149 from bkryza/v0.3.6
Updated README and CHANGELOG for 0.3.6
2023-05-29 00:05:54 +02:00
Bartek Kryza
3d8a0ce428 Updated README and CHANGELOG for 0.3.6 2023-05-28 23:02:51 +02:00
Bartek Kryza
77f3325d6a Merge pull request #148 from bkryza/add-packages-from-directory-structure
Add packages from directory structure
2023-05-28 22:58:45 +02:00
Bartek Kryza
f273f6b2f7 Fixed formatting 2023-05-28 22:20:40 +02:00
Bartek Kryza
8e801fe31d Fixed building on MSVC 2023-05-28 22:17:21 +02:00
Bartek Kryza
0028cf6f3d Fixed building on macos 2023-05-28 19:59:58 +02:00
Bartek Kryza
3e97a37c5f Updated docs 2023-05-28 19:08:10 +02:00
Bartek Kryza
81c7ce71df Improved skipping of empty packages in class diagrams 2023-05-28 18:38:57 +02:00
Bartek Kryza
5c4a98ba79 Fixed clang-tidy warnings 2023-05-27 23:41:36 +02:00
Bartek Kryza
e6fa19ff39 Refactored nested diagrams with element_view template 2023-05-27 22:32:04 +02:00
Bartek Kryza
ba32b54395 Added test case for package diagram from directory structure for plain C 2023-05-26 21:46:39 +02:00
Bartek Kryza
2a29968f09 Added test case for package diagram from directory structure 2023-05-26 21:06:23 +02:00
Bartek Kryza
467c021e17 Added generation of package diagrams from directory structure instead of namespaces 2023-05-26 21:05:52 +02:00
Bartek Kryza
c3dcac72da Updated t00065 test case 2023-05-24 22:23:14 +02:00
Bartek Kryza
75c027262f Fixed class diagram generation with packages from directories 2023-05-24 22:22:47 +02:00
Bartek Kryza
10a28cf35e Added clanguml element hierarchy class diagram 2023-05-24 22:18:40 +02:00
Bartek Kryza
01c791e6a1 Added initial support for directory based packages in class diagrams 2023-05-21 11:55:57 +02:00
Bartek Kryza
044c9ced19 Fixed generation of dependent template argument names (#146) 2023-05-20 11:40:12 +02:00
Bartek Kryza
bca1162b16 Updated changelog 2023-05-16 18:01:42 +02:00
Bartek Kryza
7dff400978 Fixed possible segfault in package diagram generator 2023-05-16 08:56:08 +02:00
Bartek Kryza
9035ee52ac Merge pull request #143 from bkryza/fix-handling-field-template-instantiation-relationships
Fix handling field template instantiation relationships
2023-05-15 09:39:05 +02:00
Bartek Kryza
90e251314f Updated test cases documentation 2023-05-15 01:26:34 +02:00
Bartek Kryza
57aa174a86 Fixed t00064 on LLVM 16 2023-05-15 01:23:37 +02:00
Bartek Kryza
02f470e563 Fixed rendering of methods in template class specializations 2023-05-14 18:57:40 +02:00
Bartek Kryza
0fbf491dfe Fixed handling of decltype cxxmember type aliases with dependend parameters 2023-05-14 16:35:14 +02:00
Bartek Kryza
4b0fcd631d Fixed handling of function template parameters 2023-05-13 18:10:11 +02:00
Bartek Kryza
d6db61bde0 Updated README example 2023-05-13 15:01:29 +02:00
Bartek Kryza
c110d19a78 Added type_list test case 2023-05-13 14:58:24 +02:00
Bartek Kryza
3b573ff034 Fixed handling of anonymous template parameters 2023-05-13 14:58:07 +02:00
Bartek Kryza
2223f595cd Fixed generation of template specializations from alias template type members 2023-05-13 12:42:30 +02:00
Bartek Kryza
3b99ca1313 Updated CHANGELOG 2023-05-11 22:01:34 +02:00
Bartek Kryza
8ae1d2a005 Merge pull request #139 from bkryza/fix-handling-of-anonymous-c-style-typedef-structs
Fixed handling of C99 typedef structs (#138)
2023-05-11 22:00:59 +02:00
Bartek Kryza
463f27e54e Updated test cases documentation 2023-05-11 21:29:13 +02:00
Bartek Kryza
7e9944ce60 Fixed handling of C99 typedef structs (#138) 2023-05-11 19:52:27 +02:00
Bartek Kryza
9a5a1523d9 Merge pull request #137 from bkryza/v0.3.5
V0.3.5
2023-05-09 23:04:02 +02:00
Bartek Kryza
e2b772d8d6 Fixed formatting 2023-05-09 22:04:51 +02:00
Bartek Kryza
c4fb819014 Fixed include diagram JSON generator on Windows 2023-05-09 22:03:42 +02:00
Bartek Kryza
48e845ce07 Updated test cases documentation 2023-05-09 20:03:25 +02:00
Bartek Kryza
9e366ddd9e Improved libraries detection on Apple Silicon Homebrew 2023-05-09 20:01:28 +02:00
Bartek Kryza
0aa6ff50c9 Updated README badge 2023-05-09 19:59:08 +02:00
Bartek Kryza
7fb453c1ad Updated changelog 2023-05-09 19:57:58 +02:00
Bartek Kryza
e14a6effd5 Fixed clang-tidy warnings 2023-05-09 19:41:55 +02:00
Bartek Kryza
29a3a10ca8 Improve error handling in PlantUML directives generator 2023-05-09 19:20:07 +02:00
Bartek Kryza
f3453b595d Merge pull request #136 from bkryza/add-element-types-filter
Added element_types diagram filter (#131)
2023-05-08 23:53:48 +02:00
Bartek Kryza
39efdf5680 Updated test cases documentation 2023-05-08 23:24:12 +02:00
Bartek Kryza
dec4b7bc3d Added element_types diagram filter (#131) 2023-05-08 22:54:34 +02:00
Bartek Kryza
f8876b1ed0 Updated changelog 2023-05-07 19:02:12 +02:00
Bartek Kryza
2bbaad2715 Merge pull request #134 from bkryza/add-query-driver-option
Add query driver option
2023-05-07 18:55:01 +02:00
Bartek Kryza
58572e4da7 Updated building on Windows 2023-05-07 16:50:10 +02:00
Bartek Kryza
702a1655d0 Updated docs 2023-05-07 16:33:17 +02:00
Bartek Kryza
16ca3bd50a Added handling of query-driver target and using default driver for '.' 2023-05-07 16:33:10 +02:00
Bartek Kryza
d31f282816 Fixed building on macOS 2023-05-06 16:58:19 +02:00
Bartek Kryza
9b2adc5d2f Added --query-driver option to enable automatic detection of system include paths from selected compiler (#109) 2023-05-06 16:39:41 +02:00
Bartek Kryza
023fac07f9 Merge pull request #133 from bkryza/fix-add-compile-commands-flags
Fix add compile commands flags
2023-05-06 00:16:10 +02:00
Bartek Kryza
68a20c550b Updated troubleshooting 2023-05-06 00:15:46 +02:00
Bartek Kryza
4477a1892f Updated configuration file specification 2023-05-06 00:14:26 +02:00
Bartek Kryza
2367765d1f Fixed .gitignore 2023-05-05 23:47:40 +02:00
Bartek Kryza
e6fb4329df Updated troubleshooting docs section 2023-05-05 23:00:23 +02:00
Bartek Kryza
5e78377cf3 Added add_compile_flag and remove_compile_flag options to cli_handler (#130) 2023-05-05 22:40:31 +02:00
Bartek Kryza
d349f3e01c Updated remove_compile_flags option 2023-05-05 21:09:21 +02:00
Bartek Kryza
f912e7ae5d Merge pull request #129 from bkryza/fix-template-specialization-members
Fix template specialization members
2023-05-04 23:03:09 +02:00
Bartek Kryza
3b0c7ed3a2 Updated test cases documentation 2023-05-04 22:32:47 +02:00
Bartek Kryza
3eb1c476b3 Added rendering of template specialization members 2023-05-04 22:29:13 +02:00
Bartek Kryza
7277320199 Improved error message about no translation units found 2023-05-04 20:53:13 +02:00
Bartek Kryza
2c5769982b Updated README formatting 2023-05-03 23:15:10 +02:00
Bartek Kryza
92ec340292 Merge pull request #127 from bkryza/fix-handling-of-template-parameters-of-different-kinds
Fix handling of template parameters of different kinds
2023-05-03 23:10:39 +02:00
Bartek Kryza
475eaa2974 Fixed typo 2023-05-03 22:28:15 +02:00
Bartek Kryza
60c2f31060 Updated github actions to nodejs 16 2023-05-03 22:28:09 +02:00
Bartek Kryza
a42009e459 Updated test cases documentation 2023-05-03 21:53:49 +02:00
Bartek Kryza
665c784fed Updated CHANGELOG 2023-05-03 21:47:03 +02:00
Bartek Kryza
82410b345d Fixed clang-tidy warnings 2023-05-03 21:38:31 +02:00
Bartek Kryza
e9a57283fc Fixed test cases on LLVM 16 2023-05-03 20:23:17 +02:00
Bartek Kryza
3df81d5878 Updated README with examples 2023-05-03 16:25:02 +02:00
Bartek Kryza
3fea01d452 Fixed handling of template template specialization parameters in instantiation deduction 2023-05-03 12:41:26 +02:00
Bartek Kryza
f01ddc63f2 Fixed handling of array template specialization types 2023-05-02 16:10:35 +02:00
Bartek Kryza
640c5263ce Fixed handling of qualifiers in template parameter deduced contexts 2023-05-01 12:39:45 +02:00
Bartek Kryza
68f067f76a Refactored template builder with try_as methods for different types 2023-05-01 01:41:04 +02:00
Bartek Kryza
6ebdc8ab77 WIP 2023-04-28 22:46:36 +02:00
Bartek Kryza
0f4a2e1f9c Fixed handling of qualifiers in unexposed template parameters 2023-04-25 01:13:48 +02:00
Bartek Kryza
47ccb561c9 Fixed handling of unexposed variadic template params 2023-04-24 00:28:57 +02:00
Bartek Kryza
3ed50ba3b2 Fixed formatting 2023-04-23 19:29:46 +02:00
Bartek Kryza
192e1993e8 Added initial unexposed template parameter deduction test case 2023-04-23 19:29:30 +02:00
Bartek Kryza
0aa4eb732d Improved unexposed template parameter tokenization 2023-04-23 19:29:02 +02:00
Bartek Kryza
7f9d698afc Improved handling of method template deductions 2023-04-18 23:56:37 +02:00
Bartek Kryza
6323ce8a92 Fixed template_builder handling of nested template specializations 2023-04-18 00:13:48 +02:00
Bartek Kryza
758c1418a6 Refactored template instantiation builder methods to a separate class 2023-04-15 22:42:17 +02:00
Bartek Kryza
f034b554de Added case handling of template argument kinds 2023-04-15 11:48:21 +02:00
Bartek Kryza
0d524b38a4 Fixed handling of template template default arguments 2023-04-14 21:05:48 +02:00
Bartek Kryza
c91fe43c1c Merge pull request #120 from bkryza/v0.3.4
V0.3.4
2023-04-07 12:15:07 +02:00
Bartek Kryza
9a96c03c57 Updated release badges 2023-04-07 11:17:21 +02:00
Bartek Kryza
b74bdab785 Updated CHANGELOG for 0.3.4 2023-04-07 10:29:35 +02:00
Bartek Kryza
a06ac52865 Updated test cases documentation 2023-04-07 00:55:14 +02:00
Bartek Kryza
e2a6b81f7f Fixed CLI11 print help handling 2023-04-07 00:46:01 +02:00
Bartek Kryza
2a6f515b47 Added diagram metadata to PlantUML and JSON generators 2023-04-07 00:22:52 +02:00
Bartek Kryza
a682aab21d Updated CLI11 version to 2.3.2 2023-04-07 00:21:07 +02:00
Bartek Kryza
06fe24f59b Merge pull request #119 from bkryza/fix-t00044
Fix t00044
2023-04-06 00:02:05 +02:00
Bartek Kryza
14cba01a3f Updated test cases documentation 2023-04-05 23:35:29 +02:00
Bartek Kryza
69a94bcc43 Extended t00044 with JSON checks 2023-04-05 23:28:51 +02:00
Bartek Kryza
ade1f76640 Fixed clang-tidy warnings 2023-04-05 22:55:54 +02:00
Bartek Kryza
38928cf86f Refactored template specialization matching 2023-04-05 21:57:56 +02:00
Bartek Kryza
cb74864d0d Removed dead code 2023-04-05 20:31:00 +02:00
Bartek Kryza
2b951fe170 Fixed matching template instantiation to templates with variadic params in the middle 2023-04-05 00:44:27 +02:00
Bartek Kryza
425a13ec5b Fixed t00044 2023-04-05 00:22:45 +02:00
Bartek Kryza
75eaef3662 Fixed handling of template function specialization arguments 2023-04-02 19:40:05 +02:00
Bartek Kryza
a55845e29e Updated CHANGELOG 2023-03-31 01:03:34 +02:00
Bartek Kryza
8009db2aba Merge pull request #117 from bkryza/fix-building-on-llvm-16
Fix building on llvm 16 #108
2023-03-31 01:02:16 +02:00
Bartek Kryza
65c3929cb2 Fixed clang-tidy warnings 2023-03-30 22:48:42 +02:00
Bartek Kryza
b35b840b66 Fixed formatting 2023-03-30 22:34:46 +02:00
Bartek Kryza
d9204414d9 Fixed sequence diagram test cases on LLVM 16 2023-03-30 22:30:25 +02:00
Bartek Kryza
c297616b59 Fixed class diagram test cases on LLVM 16 2023-03-30 00:31:37 +02:00
Bartek Kryza
15f9f9ae2b Fixed compilation with some failing test cases on LLVM 16 2023-03-28 21:35:31 +02:00
Bartek Kryza
91ece95d49 Updated docs 2023-03-28 09:53:46 +02:00
Bartek Kryza
8c8bd4464a Updated docs 2023-03-27 22:52:31 +02:00
Bartek Kryza
e9a4504827 Added test case for paths include filter (Fixes #113) 2023-03-27 22:45:12 +02:00
Bartek Kryza
97177e09a1 Merge pull request #116 from bkryza/v0.3.3
V0.3.3
2023-03-26 20:38:27 +02:00
Bartek Kryza
8d136adb6d Updated README badge version 2023-03-26 20:09:17 +02:00
Bartek Kryza
ef3f4c9759 Fixed compilation on ubuntu kinetic 2023-03-26 18:12:48 +02:00
Bartek Kryza
0552810ddb Updated CHANGELOG for 0.3.3 2023-03-26 17:27:05 +02:00
Bartek Kryza
6513d27e4b Added option to inject custom compile flags to compilation database (fixes #112) 2023-03-26 17:26:28 +02:00
Bartek Kryza
5b60a30855 Added LLVM compatible versions badge 2023-03-26 16:12:56 +02:00
Bartek Kryza
d842bf158f Merge pull request #115 from bkryza/add-json-model-output-generator
Add json model output generator -  resolves #114
2023-03-26 01:11:40 +01:00
Bartek Kryza
017fc7025b Fixed json generator selector 2023-03-26 00:43:35 +01:00
Bartek Kryza
f2062c5909 Updated test cases documentation 2023-03-26 00:24:04 +01:00
Bartek Kryza
fc3110fd4e Fixed clang-tidy warnings 2023-03-26 00:19:49 +01:00
Bartek Kryza
90307793d8 Remove access for relationships in include and package diagrams 2023-03-25 22:28:32 +01:00
Bartek Kryza
9e3c387fbd Optimized sequence diagram JSON models 2023-03-25 21:19:27 +01:00
Bartek Kryza
a797a992b4 Refactored test case diagram visitor and generator selection based on traits 2023-03-25 21:14:07 +01:00
Bartek Kryza
9e7c290685 Updated docs 2023-03-25 20:41:00 +01:00
Bartek Kryza
3b75da062e Refactored diagram visitor and generator selection based on traits 2023-03-25 20:21:13 +01:00
Bartek Kryza
3a772a9102 Updated test cases documentation 2023-03-25 18:18:31 +01:00
Bartek Kryza
344549ac03 Added include diagram JSON model generator 2023-03-25 18:18:19 +01:00
Bartek Kryza
aa2d3099de Added JSON package diagram generator test cases 2023-03-25 13:40:10 +01:00
Bartek Kryza
c1bce60656 Added JSON package diagram generator 2023-03-25 12:20:52 +01:00
Bartek Kryza
43b81f97ce Added JSON test cases for all sequence diagram test cases 2023-03-25 01:25:59 +01:00
Bartek Kryza
49a40723a7 Added sequence diagram JSON test matchers 2023-03-23 00:25:51 +01:00
Bartek Kryza
491fb2b443 Added test cases for JSON class generators 2023-03-22 01:00:26 +01:00
Bartek Kryza
c59fbfa565 Added JSON test case stubs for all class diagram test cases 2023-03-21 00:37:57 +01:00
Bartek Kryza
b412f46fb2 Added initial json generator test cases 2023-03-20 01:33:50 +01:00
Bartek Kryza
44cd7b0484 Refactored JSON sequence diagram generator 2023-03-19 19:08:31 +01:00
Bartek Kryza
f0497e934d First working version of JSON sequence diagram generator 2023-03-19 18:30:00 +01:00
Bartek Kryza
e620c86f31 Updated test cases documentation 2023-03-17 00:42:47 +01:00
Bartek Kryza
4e404a362e Changed JSON generator paths to relative 2023-03-17 00:39:52 +01:00
Bartek Kryza
f13ce56840 Fixed class template parameter generation in sequence visitor 2023-03-16 23:45:05 +01:00
Bartek Kryza
e0447f28c1 Fixed class template parameter generation in class visitor 2023-03-16 21:45:08 +01:00
Bartek Kryza
6d4533018b Refactoring template_parameter model 2023-03-16 01:53:10 +01:00
Bartek Kryza
3a01d8689c Updated troubleshooting 2023-03-15 18:12:24 +01:00
Bartek Kryza
2848090ad8 Fix clang-tidy warnings 2023-03-15 01:47:49 +01:00
Bartek Kryza
34131324ec Added json class generator test cases 2023-03-15 00:51:07 +01:00
Bartek Kryza
08d6f87d23 Added complete json generation for class diagrams 2023-03-14 00:54:10 +01:00
Bartek Kryza
19ae58f493 Refactored cppidx generator name to json 2023-03-13 22:14:26 +01:00
Bartek Kryza
bffe9913aa Added cli options for cppidx generator 2023-03-13 00:30:19 +01:00
Bartek Kryza
4ffb36fa9e Merge pull request #107 from bkryza/add-diagram-templates
Add diagram templates
2023-03-12 01:00:13 +01:00
Bartek Kryza
d5b279e096 Fixed typo 2023-03-12 00:38:05 +01:00
Bartek Kryza
eeb3d41a10 Updated README 2023-03-12 00:15:42 +01:00
Bartek Kryza
07b71aa389 Updated CHANGELOG 2023-03-12 00:14:59 +01:00
Bartek Kryza
9ba8fc9c05 Added diagram template docs 2023-03-12 00:13:37 +01:00
Bartek Kryza
bcba612f65 Fixed clang-tidy warnings 2023-03-11 22:07:11 +01:00
Bartek Kryza
e7353d7a03 Added cli_handler tests 2023-03-11 20:50:17 +01:00
Bartek Kryza
f1c125bf32 Refactored command line handling 2023-03-11 19:00:14 +01:00
Bartek Kryza
41537c5401 Implement CLI options for adding diagrams to config from templates 2023-03-08 01:25:38 +01:00
Bartek Kryza
2092a0e3e6 Added diagram templates to config 2023-03-07 23:03:02 +01:00
Bartek Kryza
0dc7445909 Updated test cases documentation 2023-03-06 23:32:40 +01:00
Bartek Kryza
029a28a0d3 Added NUMPROC option to clang-tidy 2023-03-06 22:50:33 +01:00
Bartek Kryza
8f99e2fc2f Added parents (base classes) diagram filter 2023-03-06 22:33:11 +01:00
Bartek Kryza
8ba0239283 Added option to read config file from stdin (related #105) 2023-03-05 19:34:06 +01:00
Bartek Kryza
f16c0e4a17 Updated test cases documentation 2023-03-05 11:41:16 +01:00
Bartek Kryza
b2fd763a89 Updated changelog 2023-03-05 11:39:39 +01:00
Bartek Kryza
69da23c4b2 Merge pull request #106 from bkryza/fix-processing-clang-uml-examples
Fix processing clang uml examples
2023-03-05 00:29:26 +01:00
Bartek Kryza
cfca79182c Added relationship exclusion to context filter 2023-03-04 21:11:14 +01:00
Bartek Kryza
a58b633d01 Fixed handling of template class specializations nested in other classes 2023-03-04 15:02:35 +01:00
Bartek Kryza
d4d749ae34 Fixed nested anonymous namespace regression 2023-03-04 11:51:52 +01:00
Bartek Kryza
bad78c0c7a Merge pull request #103 from bkryza/v0.3.2
V0.3.2
2023-03-02 23:44:15 +01:00
Bartek Kryza
812eada63a Fixed RPM spec for out of source builds 2023-03-02 22:28:08 +01:00
Bartek Kryza
8a4e6894fb Fixed git version extraction 2023-03-02 22:05:22 +01:00
Bartek Kryza
1a4e601828 Fixed git version extraction 2023-03-02 21:47:50 +01:00
Bartek Kryza
66cc92da82 Updated changelog for 0.3.2 2023-03-02 20:47:06 +01:00
Bartek Kryza
184386796a Merge pull request #102 from bkryza/add-support-cpp20-concepts
Add support cpp20 concepts
2023-03-02 01:12:56 +01:00
Bartek Kryza
464d80eca3 Fix clang-tidy warning after upgrading to clang-tidy-15 2023-03-02 00:33:28 +01:00
Bartek Kryza
884e021b9a Fix building with MSVC 2023-03-01 23:00:02 +01:00
Bartek Kryza
480d1bcae1 Updated test cases compile flags for C translation units 2023-03-01 20:36:19 +01:00
Bartek Kryza
cf0d87a0bf Updated clang-format to version 15 2023-03-01 20:22:00 +01:00
Bartek Kryza
fe99b72099 Updated GitHub actions Ubuntu to 22.04 2023-03-01 20:14:17 +01:00
Bartek Kryza
22b7b939ad Updated test cases documentation 2023-03-01 20:07:01 +01:00
Bartek Kryza
65a55fa7cc Fixed clang-tidy warnings 2023-03-01 19:58:25 +01:00
Bartek Kryza
afcc850087 Fixed formatting 2023-03-01 19:28:58 +01:00
Bartek Kryza
7708ed2535 Added non-virtual polymorphism abstract factory test case based on concepts 2023-03-01 19:28:42 +01:00
Bartek Kryza
be2ad5dc9b Added test case for C++20 concepts with variadic params 2023-03-01 18:37:31 +01:00
Bartek Kryza
7996cb7a00 Improved concept relationship handling including concepts with variadic params 2023-03-01 18:35:08 +01:00
Bartek Kryza
dbb3e68c3f Added rendering of concept requirements in concept body 2023-02-26 23:30:15 +01:00
Bartek Kryza
2ab6ed627e Refactored should_include in class diagram visitor 2023-02-26 20:35:22 +01:00
Bartek Kryza
84f7bed05c Updated test cases documentation 2023-02-26 13:54:10 +01:00
Bartek Kryza
3509853dba Implemented tests for concept test case 00056 2023-02-26 13:51:38 +01:00
Bartek Kryza
1fc0bf3f80 Added constrained template parameter names in requires relationship 2023-02-25 19:35:33 +01:00
Bartek Kryza
274a698713 Initial support for concept dependency relationships in class diagrams 2023-02-25 01:50:20 +01:00
Bartek Kryza
20a0f2d338 Added initial support for C++20 concepts 2023-02-21 19:43:29 +01:00
Bartek Kryza
040403382a Added basic framework for creating cxx20 test cases 2023-02-20 22:39:32 +01:00
Bartek Kryza
6be07a7dfa Merge pull request #99 from bkryza/fix-handling-of-plain-c-translation-units
Adds support for C99/C11 class diagrams from structs and unions relationships (#97).
2023-02-19 19:09:54 +01:00
Bartek Kryza
56a8ad9ca2 Updated test cases documentation 2023-02-19 18:56:11 +01:00
Bartek Kryza
6341a62857 Added support for 'class' diagrams from C99/C11 translation units (#97) 2023-02-19 18:54:04 +01:00
Bartek Kryza
4afb1daef0 Merge pull request #98 from bkryza/fix-building-internal-clang-uml-diagrams
Fix building internal clang uml diagrams
2023-02-19 01:39:42 +01:00
Bartek Kryza
35c4c210b1 Enabled backward-cpp for debug build on Linux 2023-02-19 00:37:15 +01:00
Bartek Kryza
bdf9a7e18f Fixed generation of class_model_class diagram 2023-02-18 23:04:32 +01:00
Bartek Kryza
c2b83e2396 Updated the clang-uml build path after cmake refactor 2023-02-18 22:20:28 +01:00
Bartek Kryza
28572e74c5 Merge pull request #92 from bkryza/refactor-cmake-files
Refactor cmake files
2023-02-08 00:02:16 +01:00
Bartek Kryza
4259733611 Fixed formatting 2023-02-07 23:26:09 +01:00
Bartek Kryza
78ec599466 Fixed building on macos with LLVM Clang 2023-02-07 23:18:19 +01:00
Bartek Kryza
43328e3e2d Fixed unit tests on MSVC 2023-02-07 22:18:57 +01:00
Bartek Kryza
865ae9d8ed Reverted custom compilation database class to default 2023-02-07 18:32:11 +01:00
Bartek Kryza
7112c160f5 Added PowerShell build script 2023-02-07 17:29:01 +01:00
Bartek Kryza
8b70bba0c0 Refactored cmake scripts and test cases compile database handling 2023-02-05 16:35:05 +01:00
Bartek Kryza
cdb056a52b Merge pull request #91 from bkryza/add-element-grouping-in-class-diagrams
Add element grouping in class diagrams
2023-02-04 23:00:57 +01:00
Bartek Kryza
315147ae3f Updated test cases documentation 2023-02-04 21:43:16 +01:00
Bartek Kryza
fbc4fadbb7 Added 'row' and 'column' layout hints 2023-02-04 21:32:00 +01:00
Bartek Kryza
edba233030 Added support for 'together' layout hint in package diagrams 2023-02-04 16:30:26 +01:00
Bartek Kryza
4423b14b62 Added support for 'together' option in class diagrams with rendered namespaces 2023-02-04 15:45:17 +01:00
Bartek Kryza
d7d80ab41e Added support for 'together' option in class diagrams without rendered namespaces 2023-02-04 00:24:09 +01:00
Bartek Kryza
b910e9b02f Merge pull request #89 from bkryza/add-logo 2023-01-29 21:04:21 +01:00
Bartek Kryza
76d14bc738 Updated logo 2023-01-29 19:33:04 +01:00
Bartek Kryza
0b6893fd3b Merge pull request #88 from bkryza/enable-notes-in-class-elements
Enable notes in class elements
2023-01-29 12:37:13 +01:00
Bartek Kryza
09f2db3ef9 Updated test cases documentation 2023-01-29 12:15:34 +01:00
Bartek Kryza
3abc6b784f Enabled adding notes to class methods and members (fixes #87) 2023-01-29 12:00:00 +01:00
Bartek Kryza
80b4b109c0 Added logo 2023-01-28 12:59:11 +01:00
Bartek Kryza
37767d7957 Updated github actions to disable builds on doc files 2023-01-28 12:58:51 +01:00
Bartek Kryza
e6ca06bbb2 Merge pull request #86 from bkryza/improve-handling-of-template-methods-in-class-diagrams
Improve handling of template methods in class diagrams
2023-01-25 23:57:13 +01:00
Bartek Kryza
1900f20995 Updated test cases documentation 2023-01-25 23:08:41 +01:00
Bartek Kryza
39851ca6d9 Extended t00052 test case 2023-01-25 23:07:08 +01:00
Bartek Kryza
21e7c3d3a0 Refactored cx utils to clang_utils 2023-01-25 22:43:49 +01:00
Bartek Kryza
9a7d66f93f Improved rendering of template methods in class diagrams 2023-01-25 22:13:57 +01:00
Bartek Kryza
0e6532f66c Updated installation instruction for Windows 2023-01-22 19:56:03 +01:00
Bartek Kryza
bc2fc2e4aa Merge pull request #85 from bkryza/v0.3.1
V0.3.1
2023-01-22 19:49:09 +01:00
Bartek Kryza
62bbcf22ee Updated packaging Makefile rules 2023-01-22 19:35:49 +01:00
Bartek Kryza
b6aa2c0dae Releasing version 0.3.1 2023-01-22 17:47:00 +01:00
Bartek Kryza
fada7c27b5 Merge pull request #84 from bkryza/fix-relative-to-paths
Fix relative to paths
2023-01-22 16:19:48 +01:00
Bartek Kryza
da30adc6c8 Updated test cases documentation 2023-01-22 16:04:57 +01:00
Bartek Kryza
2136ebefb3 Fixed clang-tidy warnings 2023-01-22 16:02:53 +01:00
Bartek Kryza
b802eaee3d Fixed relative lambda names in MSVC 2023-01-22 15:49:12 +01:00
Bartek Kryza
e0a42be63a Updated test cases documentation 2023-01-22 13:59:08 +01:00
Bartek Kryza
8deaf0246b Fixed handling of lambda names in auto types in class diagrams (#78,#82) 2023-01-22 13:56:54 +01:00
Bartek Kryza
3005ad7c37 Fixed formatting 2023-01-21 23:23:36 +01:00
Bartek Kryza
023a4a0cc0 Fixed generation of lambda names in class diagrams (#78) 2023-01-21 23:23:13 +01:00
bram
b5cf78ce82 Fix for segfault in path::pop_back 2023-01-21 20:44:32 +01:00
Bartek Kryza
61dcf9ef04 Updated docs 2023-01-21 20:30:14 +01:00
Bartek Kryza
78cfa630e5 Fixed handling of relative paths in configuration files (#69) 2023-01-21 18:07:46 +01:00
Bartek Kryza
b3701fa810 Updated glob dependency to commit b66732b0e72 2023-01-21 17:28:39 +01:00
Bartek Kryza
9a527eef0c Added toc to each docs page and Makefile update target 2023-01-19 22:01:51 +01:00
Bartek Kryza
c6bb063ef2 Updated test cases documentation 2023-01-18 21:38:37 +01:00
Bartek Kryza
a9f793e407 Removed dead code and improve test coverage 2023-01-18 21:37:06 +01:00
Bartek Kryza
00b9321034 Added --dump-config command line option (Fixes #77) 2023-01-18 00:31:05 +01:00
Bartek Kryza
74353603f8 Merge pull request #79 from bkryza/fix-tests-on-msvc
Fix tests on msvc
2023-01-17 00:38:54 +01:00
Bartek Kryza
f3ef592f01 Fixed clang-tidy warnings 2023-01-17 00:14:43 +01:00
Bartek Kryza
57740c0c6c Added clang-tidy Makefile target 2023-01-17 00:14:35 +01:00
Bartek Kryza
bdf55d45b7 Fixed formatting 2023-01-16 23:47:14 +01:00
Bartek Kryza
c49053dcf2 Fixed test cases under MS Visual Studio 2023-01-16 23:39:30 +01:00
Bartek Kryza
7a1cbbce9a Updated Windows build instructions 2023-01-16 23:38:51 +01:00
Bartek Kryza
7153666087 Fixed formatting 2023-01-13 18:24:26 +01:00
Bartek Kryza
ada11c6047 Fixed class and include diagrams tests in Windows 2023-01-12 23:31:12 +01:00
Bartek Kryza
3fbf3da27f Fixed path separators in diagram link URL's in Windows 2023-01-11 00:29:43 +01:00
Bartek Kryza
c7d201eef9 Merge pull request #72 from bkryza/add-windows-installer
Added Windows installer target using CPack and NSIS
2023-01-08 18:08:13 +01:00
Bartek Kryza
235707c916 Added Windows installer target using CPack and NSIS 2023-01-08 17:41:59 +01:00
Bartek Kryza
cf3e7ebc6e Merge pull request #71 from bkryza/add-msvc-support
Add support for building with Microsoft Visual Studio
2023-01-07 20:38:00 +01:00
Bartek Kryza
0fb0151feb Updated README 2023-01-07 19:24:22 +00:00
Bartek Kryza
e0012cca89 Fixed formatting 2023-01-07 19:16:35 +00:00
Bartek Kryza
d1ccee9c98 Fix handling of --compile-database option (Fixes #70) 2023-01-07 19:13:02 +00:00
Bartek Kryza
a35eec2023 Updated windows build instructions 2023-01-07 19:08:45 +00:00
Bartek Kryza
d64f974348 Updated README 2023-01-07 17:48:27 +00:00
Bartek Kryza
f1bae8289e Moved installation instructions to separate doc page 2023-01-07 15:34:50 +00:00
Bartek Kryza
0ace023985 Fixed building on macos 2023-01-07 14:42:12 +01:00
Bartek Kryza
a1a9d4ae99 Fixed formatting 2023-01-07 12:32:46 +01:00
Bartek Kryza
f1f6051cf7 Fixed path filters on Windows 2023-01-07 11:07:00 +00:00
Bartek Kryza
1cbc3e697d Added installation documentation page 2023-01-06 23:55:27 +00:00
Bartek Kryza
f5bcbeec0b Initial MSVC build working 2023-01-06 23:39:56 +00:00
Bartek Kryza
476a7873f9 Updated README 2023-01-02 23:51:38 +01:00
Bartek Kryza
dcafeb817b Merge pull request #65 from bkryza/v0.3.0
V0.3.0
2023-01-02 23:42:18 +01:00
Bartek Kryza
2b981c30a5 Updated conda packaging scripts 2023-01-02 22:46:47 +01:00
Bartek Kryza
cab22d3621 Added Fedora rpm makefile target 2023-01-02 21:02:37 +01:00
Bartek Kryza
d140c1f1a1 Fixed documentation typos 2023-01-02 21:00:40 +01:00
Bartek Kryza
93360282ad Fixed packaging scripts for Ubuntu Kinetic 2023-01-02 18:34:49 +01:00
Bartek Kryza
38724a8f8d Switched from quilt to native for Ubuntu packages 2023-01-02 14:21:36 +01:00
Bartek Kryza
e2d97f3610 Updated packaging scripts for Launchpad 2023-01-02 14:07:21 +01:00
Bartek Kryza
232fa1ac32 Updated packaging scripts for dbgsym packages 2023-01-02 13:50:41 +01:00
Bartek Kryza
afdb5b0a37 Added AUTHORS.md 2023-01-02 11:37:20 +01:00
Bartek Kryza
37b6e69d41 Updated copyright headers 2023-01-02 11:29:11 +01:00
Bartek Kryza
82f3a3a2e5 Added Fedora packaging spec 2023-01-01 23:57:39 +01:00
Bartek Kryza
e4a29c7117 Added initial documentation 2023-01-01 20:36:58 +01:00
Bartek Kryza
9d7275e388 Updated test case documentation 2022-12-30 19:10:14 +01:00
Bartek Kryza
a88ae790e8 Added Debian packaging config for Ubuntu Kinetic 2022-12-29 22:46:14 +01:00
Bartek Kryza
681dd5c91e Changed lambda naming in sequence diagrams to relative paths 2022-12-28 22:08:35 +01:00
Bartek Kryza
f1b7dfee0d Updated sample sequence diagram config template 2022-12-27 23:28:23 +01:00
Bartek Kryza
48e8770208 Added command line options to add diagrams to config 2022-12-27 22:01:41 +01:00
Bartek Kryza
139f61fdeb Added quiet command line option to disable logging 2022-12-27 20:02:23 +01:00
Bartek Kryza
29eedff762 Updated test case documentation 2022-12-26 21:58:34 +01:00
Bartek Kryza
95d3339fd2 Fixed formatting 2022-12-26 21:47:50 +01:00
Bartek Kryza
887652ed6b Added debug_mode config option 2022-12-26 21:47:27 +01:00
Bartek Kryza
1a344f9d8c Refactored sequence diagram visitor 2022-12-26 21:46:45 +01:00
Bartek Kryza
6a167f0835 Fixed segfault in sequence diagram template class generation 2022-12-26 21:44:49 +01:00
Bartek Kryza
63c3f6dc48 Fixed type aliases test case 2022-12-25 21:42:43 +01:00
Bartek Kryza
e45bcb6267 Updated version message 2022-12-25 21:41:50 +01:00
Bartek Kryza
a1223b1471 Fixed formatting 2022-12-25 21:32:15 +01:00
Bartek Kryza
07584c8616 Fixed building on macos with LLVM 15 2022-12-25 21:30:01 +01:00
Bartek Kryza
87f6616783 Refactored sequence diagram translation unit visitor 2022-12-25 16:08:39 +01:00
Bartek Kryza
edc35876b2 Updated test cases documentation 2022-12-24 19:05:52 +01:00
Bartek Kryza
8e8984fe66 Updated clang-tidy check filters 2022-12-24 19:01:42 +01:00
Bartek Kryza
0afd64668c Applied ppcoreguidelines-init-variables nullptr access warnings 2022-12-24 18:53:21 +01:00
Bartek Kryza
354bfcf67c Applied clang-tidy nullptr access warnings 2022-12-24 18:33:40 +01:00
Bartek Kryza
d82ac4a46b Applied readability-container-size-empty clang-tidy fixes 2022-12-24 15:34:22 +01:00
Bartek Kryza
ec9a510f76 Applied readability-redundant-declaration clang-tidy fixes 2022-12-24 15:30:31 +01:00
Bartek Kryza
dae4519ed7 Applied readability-redundant-control-flow clang-tidy fixes 2022-12-24 15:01:53 +01:00
Bartek Kryza
c13cc1d118 Applied llvm-else-after-return clang-tidy fixes 2022-12-24 14:58:06 +01:00
Bartek Kryza
b734018673 Applied llvm-else-after-return clang-tidy fixes 2022-12-24 13:34:21 +01:00
Bartek Kryza
f48269606d Update .clang-tidy check list 2022-12-23 23:05:01 +01:00
Bartek Kryza
5c4cf1e561 Applied hicpp-named-parameter clang-tidy fixes 2022-12-23 22:55:28 +01:00
Bartek Kryza
7fb4ab25ff Applied readability-const-return-type clang-tidy fixes 2022-12-23 22:46:52 +01:00
Bartek Kryza
c1d7f28f57 Applied cppcoreguidelines-pro-type-static-cast-downcast nullptr access warnings 2022-12-23 22:42:23 +01:00
Bartek Kryza
f07dc35e06 Applied clang-tidy nullptr access warnings 2022-12-23 21:26:36 +01:00
Bartek Kryza
aecbbd704b Applied misc-unused-parameters clang-tidy fixes 2022-12-23 17:02:36 +01:00
Bartek Kryza
4c7c9ff7dc Applied llvm-else-after-return clang-tidy fixes 2022-12-23 16:59:33 +01:00
Bartek Kryza
91487cf49f Applied performance-unnecessary-copy-initialization clang-tidy fixes 2022-12-23 16:51:02 +01:00
Bartek Kryza
fb2aeb6dea Applied readability-make-member-function-const clang-tidy fixes 2022-12-23 16:47:08 +01:00
Bartek Kryza
72bd69729e Applied hicpp-deprecated-headers clang-tidy fixes 2022-12-23 16:36:39 +01:00
Bartek Kryza
838b5a4b0d Fixed segfault with unresolvable aliases in Jinja templates 2022-12-23 15:45:59 +01:00
Bartek Kryza
d83a1f1805 Applied readability-qualified-auto clang-tidy fixes 2022-12-22 17:17:18 +01:00
Bartek Kryza
ebf87d2161 Applied hicpp-uppercase-literal-suffix clang-tidy fixes 2022-12-22 17:12:37 +01:00
Bartek Kryza
5271279175 Updated test cases documentation 2022-12-21 19:20:18 +01:00
Bartek Kryza
e1b6babc93 Applied hicpp-move-const-arg fixes 2022-12-21 19:11:39 +01:00
Bartek Kryza
4539ea9c64 Applied readability-implicit-bool-conversion fixes 2022-12-21 19:07:17 +01:00
Bartek Kryza
0d7167fff2 Applied clang-analyzer-core.* fixes 2022-12-21 19:02:17 +01:00
Bartek Kryza
71c772ac04 Applied performance-for-range-copy clang-tidy fixes 2022-12-21 18:16:16 +01:00
Bartek Kryza
14128374ef Applying bugprone-narrowing-conversions clang-tidy fixes 2022-12-21 18:05:45 +01:00
Bartek Kryza
5d8f31dbe6 Applying llvm-qualified-auto clang-tidy fixes 2022-12-21 17:47:00 +01:00
Bartek Kryza
6750365d54 Applying readability-simplify-boolean-expr clang-tidy fixes 2022-12-21 17:42:54 +01:00
Bartek Kryza
75db32fdeb Applied readability-qualified-auto clang-tidy fixes 2022-12-21 17:39:30 +01:00
Bartek Kryza
a907769c38 Applied misc-unused-parameters clang-tidy fixes 2022-12-21 17:35:05 +01:00
Bartek Kryza
217edd27bd Applied hicpp-noexcept-move clang-tidy fixes 2022-12-21 17:32:17 +01:00
Bartek Kryza
25f787785f Applied readability-avoid-const-params-in-decls clang-tidy fixes 2022-12-21 17:20:07 +01:00
Bartek Kryza
d6a5134ba7 Updated clang-tidy filters 2022-12-21 00:03:07 +01:00
Bartek Kryza
e32e4cd2aa Applied llvm-else-after-return clang-tidy fixes 2022-12-20 23:56:36 +01:00
Bartek Kryza
8e4c2af279 Applied google-readability-casting clang-tidy fixes 2022-12-20 23:52:45 +01:00
Bartek Kryza
134ad77f5c Applied readability-magic-numbers clang-tidy fixes 2022-12-20 23:49:43 +01:00
Bartek Kryza
0687c3093e Applied hicpp-use-override clang-tidy fixes 2022-12-20 23:29:30 +01:00
Bartek Kryza
a626bed328 Applied cppcoreguidelines-avoid-non-const-global-variables clang-tidy fixes 2022-12-20 23:28:10 +01:00
Bartek Kryza
09d60a9d07 Applied performance-faster-string-find clang-tidy fixes 2022-12-20 23:19:00 +01:00
Bartek Kryza
177c68158a Applied performance-unnecessary-value-param clang-tidy fixes 2022-12-20 23:16:46 +01:00
Bartek Kryza
6b883c4562 Applied hicpp-use-equals-default clang-tidy fixes 2022-12-20 23:06:21 +01:00
Bartek Kryza
682c6648be Applied cppcoreguidelines-pro-type-member-init,hicpp-explicit-conversionsm,modernize-use-default-member-init clang-tidy fixes 2022-12-20 23:01:55 +01:00
Bartek Kryza
1116c3ab67 Applied modernize-pass-by-value clang-tidy fixes 2022-12-20 22:40:38 +01:00
Bartek Kryza
0ce7b533f4 Applied modernize-concat-nested-namespaces clang-tidy fixes 2022-12-20 22:33:34 +01:00
Bartek Kryza
7061243113 Applied readability-use-anyofallof clang-tidy fixes 2022-12-20 22:23:03 +01:00
Bartek Kryza
a7c198f96d Updated test cases cxx flags 2022-12-20 22:11:20 +01:00
Bartek Kryza
f2760a5e21 Applied google-readability-namespace-comments clang-tidy fixes 2022-12-20 21:57:47 +01:00
Bartek Kryza
e8909c6fc1 Applied bugprone-use-after-move clang-tidy fixes 2022-12-20 21:51:48 +01:00
Bartek Kryza
204156d81b Applied clang-tidy fixes in util 2022-12-20 21:22:04 +01:00
Bartek Kryza
d6f2007a2b Fixed segfault in created class participants in sequence diagrams 2022-12-20 20:28:14 +01:00
Bartek Kryza
d1723f7b96 Added backward-cpp stack printer (90398eef20f4e7e0e939322d7e84f9c52078a325) 2022-12-20 19:18:31 +01:00
Bartek Kryza
834ead063e Minor code cleanup 2022-12-19 23:56:48 +01:00
Bartek Kryza
e87b4dccc0 Updated changelog 2022-12-19 20:15:10 +01:00
Bartek Kryza
b21b60668e Updated test cases documentation 2022-12-19 00:21:43 +01:00
Bartek Kryza
eac49e472c Improved folding empty control statements in sequence diagrams 2022-12-19 00:12:25 +01:00
Bartek Kryza
1c7e64c51e Added should_include helper methods in sequence diagram visitor 2022-12-18 22:18:41 +01:00
Bartek Kryza
c4d8bddf96 Added code formatting check 2022-12-18 17:42:24 +01:00
Bartek Kryza
5255fd1785 Fixed path filtering 2022-12-18 17:11:43 +01:00
Bartek Kryza
43c3e32597 Merge pull request #63 from bkryza/add-sequence-diagram-support-for-template-code-3
Add sequence diagram support for template code 3
2022-12-17 01:06:20 +01:00
Bartek Kryza
ae20cb4230 Updated test case documentation 2022-12-17 00:44:07 +01:00
Bartek Kryza
5d4dfbb4b1 Added sequence diagram option participants_order 2022-12-17 00:42:15 +01:00
Bartek Kryza
6454604595 Updated test case documentation 2022-12-16 23:32:42 +01:00
Bartek Kryza
3f314e0cf3 Improved translation unit glob matching in configuration files (#62) 2022-12-16 23:30:03 +01:00
Bartek Kryza
35554a2ec0 Fixed nested call expressions order in sequence diagrams 2022-12-16 21:20:17 +01:00
Bartek Kryza
4f95f426f1 Updated sequence diagram example in readme 2022-12-15 01:15:37 +01:00
Bartek Kryza
9a20aae030 Updated test case documentation 2022-12-15 01:15:23 +01:00
Bartek Kryza
8e4b670d99 Added combined feature sequence diagram test case 2022-12-15 01:11:31 +01:00
Bartek Kryza
1a82e46d7d Added support for ternary conditional operator in sequence diagrams 2022-12-14 23:58:38 +01:00
Bartek Kryza
0d15d09de2 Added test case for filtering methods based on access specifier in sequence diagrams 2022-12-14 22:00:27 +01:00
Bartek Kryza
fe9aa5d99a Updated test case documentation 2022-12-14 00:04:34 +01:00
Bartek Kryza
ed2b3e188b Added virtual method call test case 2022-12-13 23:47:32 +01:00
Bartek Kryza
d7c8c14cda Added initial support for skip decorator in sequence diagrams 2022-12-13 23:18:37 +01:00
Bartek Kryza
d425880462 Updated changelog and readme 2022-12-13 21:17:40 +01:00
Bartek Kryza
bd61a1540e Added support for switch statements in sequence diagrams 2022-12-13 21:09:34 +01:00
Bartek Kryza
2d72d98234 Updated test case documentation 2022-12-13 00:34:23 +01:00
Bartek Kryza
3020ffd69f Added support for try/catch statements in sequence diagrams 2022-12-13 00:30:12 +01:00
Bartek Kryza
91a9aa861d Added highlight of calls within condition statements in loops 2022-12-12 22:55:57 +01:00
Bartek Kryza
d7c13edbf9 Added highlight of calls within condition statements of if/else blocks 2022-12-12 21:15:05 +01:00
Bartek Kryza
b2396d7b44 Merge pull request #61 from bkryza/add-sequence-diagram-support-for-template-code-2
Add sequence diagram support for template code
2022-12-12 00:08:27 +01:00
Bartek Kryza
8dd35d11e9 Updated test case documentation 2022-12-11 23:35:31 +01:00
Bartek Kryza
62e4467665 Fixed formatting 2022-12-11 23:33:40 +01:00
Bartek Kryza
8a167a5ccc Added example clang-uml sequence diagrams 2022-12-11 23:33:15 +01:00
Bartek Kryza
9fcfaf4cd8 Updated test case documentation 2022-12-11 23:13:15 +01:00
Bartek Kryza
4a3f87caef Updated gitignore 2022-12-11 23:11:12 +01:00
Bartek Kryza
452271fd45 Refactored verbosity option to counter (none), -v, -vv, -vvv (trace) 2022-12-11 23:08:53 +01:00
Bartek Kryza
c7b80297d7 Added forward class declaration sequence diagram test case 2022-12-11 22:48:56 +01:00
Bartek Kryza
fb2bc68d39 Refactor HasCall sequence diagram test cases matcher 2022-12-11 22:32:32 +01:00
Bartek Kryza
e5e7df43e8 Refactored sequence diagram model classes 2022-12-11 21:21:27 +01:00
Bartek Kryza
29b679b0a4 Fixed id resolution of callexpr callees by function declaration 2022-12-11 19:10:13 +01:00
Bartek Kryza
70cb58fce9 Updated test case documentation 2022-12-11 02:18:05 +01:00
Bartek Kryza
cbab8b5e74 Fixed formatting 2022-12-11 02:03:57 +01:00
Bartek Kryza
dcdde1af4b Fixed if constexpr sequence diagram handling 2022-12-11 02:03:26 +01:00
Bartek Kryza
0c23ce86ba Added loop statement sequence diagram support 2022-12-11 01:50:54 +01:00
Bartek Kryza
13dae33d99 Added if statement sequence diagram support 2022-12-11 00:12:31 +01:00
Bartek Kryza
dae8513529 Updated test case documentation 2022-12-10 16:37:28 +01:00
Bartek Kryza
310f311232 Added hyperlink generation in sequence diagrams 2022-12-10 16:34:57 +01:00
Bartek Kryza
3b6d999520 Added Curiously Recurring Template Pattern sequence diagram test case 2022-12-10 12:06:12 +01:00
Bartek Kryza
80e94c2e32 Updated recursive template sequence diagram test case 2022-12-10 11:24:00 +01:00
Bartek Kryza
8e3a7ed436 Updated test case documentation 2022-12-09 23:49:34 +01:00
Bartek Kryza
757dd3eed9 Added recursive template sequence diagram test case 2022-12-09 23:34:52 +01:00
Bartek Kryza
fef88325ab Added support for styling static methods in sequence diagrams 2022-12-09 23:08:16 +01:00
Bartek Kryza
290e1ab0fe Fixed formatting 2022-12-09 22:12:49 +01:00
Bartek Kryza
69ca8c2d8e Added start_from function and method entrypoints in sequence diagrams 2022-12-09 22:12:24 +01:00
Bartek Kryza
caf0ae7928 Added combine_free_functions_into_file_participants sequence diagram option 2022-12-09 00:10:38 +01:00
Bartek Kryza
6478cffa27 Updated test case documentation 2022-12-08 00:45:19 +01:00
Bartek Kryza
0a0b2a3d35 Added template method specialization sequence diagram test case 2022-12-08 00:41:54 +01:00
Bartek Kryza
de4e88a92d Added class exclusion by namespace in sequence diagram test case 2022-12-06 22:31:54 +01:00
Bartek Kryza
8d8b3415f7 Added automatic call tracing through lambdas passed to functions as params 2022-12-06 20:14:42 +01:00
Bartek Kryza
1ca44c5a0d Updated test case documentation 2022-12-06 00:36:13 +01:00
Bartek Kryza
db3381865e Updated test case documentation 2022-12-06 00:33:08 +01:00
Bartek Kryza
f7a1130bab Added test case for sequence diagram with multiple translation units 2022-12-05 23:57:00 +01:00
Bartek Kryza
14c2cb6263 Fixed handling of arguments in sequence diagrams 2022-12-04 23:38:26 +01:00
Bartek Kryza
1644a201d0 Added function and method arguments in sequence diagrams 2022-12-04 22:51:57 +01:00
Bartek Kryza
5a8b739eba Fixed GitHub Actions build 2022-12-04 15:04:36 +01:00
Bartek Kryza
664a74faee Updated test case documentation 2022-12-04 14:49:21 +01:00
Bartek Kryza
af8d7d704a Updated test case documentation 2022-12-04 14:46:44 +01:00
Bartek Kryza
7ddd81c1b7 Fixed formatting 2022-12-04 14:42:15 +01:00
Bartek Kryza
10da4ad164 Refactored sequence diagram call expression processing 2022-12-04 14:41:23 +01:00
Bartek Kryza
b87c6acd44 Refactored lambda naming in sequence diagrams 2022-12-04 13:19:44 +01:00
Bartek Kryza
f07b35802a Refactored call expression context in sequence diagram visitor 2022-12-04 12:42:36 +01:00
Bartek Kryza
8684bc861b Fixed lambda sequence diagram test case 2022-12-04 12:10:52 +01:00
Bartek Kryza
d1d4d5e0e7 Adding handling of lambda expressions in sequence diagrams 2022-12-04 01:33:02 +01:00
Bartek Kryza
459baa326c Updated test case documentation 2022-11-30 21:32:37 +01:00
Bartek Kryza
68241ea9c8 Added recursive call generated in sequence diagram test case 2022-11-30 21:11:32 +01:00
Bartek Kryza
73f399c8a0 Added standard container sequence diagram test case 2022-11-30 20:21:55 +01:00
Bartek Kryza
115ede3cc7 Added smart pointer alias to t20009 test case 2022-11-30 19:50:40 +01:00
Bartek Kryza
9c3d65bf47 Added calls through pointers and references in template instantiation sequence diagram test case 2022-11-29 22:56:16 +01:00
Bartek Kryza
0e3c69ce38 Added smart pointer dereference sequence diagram test case 2022-11-29 22:09:04 +01:00
Bartek Kryza
f1af5460e3 Refactored sequence diagram visitor 2022-11-27 19:15:31 +01:00
Bartek Kryza
da5a4f8c5d Updated test case documentation 2022-11-27 15:26:21 +01:00
Bartek Kryza
93e95613b4 Fixed formatting 2022-11-27 15:24:01 +01:00
Bartek Kryza
df0163cdbf Added constexpr if sequence diagram test case 2022-11-27 15:23:32 +01:00
Bartek Kryza
b36355352d Added variadic class template sequence diagram test case 2022-11-27 15:21:22 +01:00
Bartek Kryza
e586c9d062 Added basic test case for sequence diagrams with class template specializations 2022-11-27 12:51:02 +01:00
Bartek Kryza
c7bfcbd66f Fixed building on LLVM 12 2022-11-23 00:24:17 +01:00
Bartek Kryza
e2f34c7dda Updated test case documentation 2022-11-23 00:09:00 +01:00
Bartek Kryza
b264ef5402 Added basic test case for sequence diagrams with template specializations 2022-11-23 00:06:18 +01:00
Bartek Kryza
4513e17275 Adding template class specialization sequence diagram test case 2022-11-21 23:56:02 +01:00
Bartek Kryza
f3aec40b2a Fixed test case with template class sequence diagram 2022-11-13 14:33:03 +01:00
Bartek Kryza
a1e447966d WIP 2022-11-13 02:49:09 +01:00
Bartek Kryza
558d1b6eff Updated test case documentation 2022-11-05 13:54:28 +01:00
Bartek Kryza
1dfade12f0 Fixed initial function template specialization sequence diagram test case 2022-11-05 13:52:54 +01:00
Bartek Kryza
c94d1dea3f Fixed sequence diagram participant ordering 2022-11-02 19:09:18 +01:00
Bartek Kryza
ae23505839 Updated test case documentation 2022-11-02 18:07:57 +01:00
Bartek Kryza
54a66ae58b Fixed formatting 2022-11-01 23:34:20 +01:00
Bartek Kryza
488dd883cc Fixed test case t20003 crash on LLVM 12 2022-11-01 23:33:47 +01:00
Bartek Kryza
0d90fdc133 Updated test case t00037 with round brackets in names 2022-11-01 22:28:05 +01:00
Bartek Kryza
17c463cebb Fixed simple template instantiation sequence diagram test case 2022-11-01 22:11:48 +01:00
Bartek Kryza
6df8c790f5 Fixed formatting 2022-11-01 21:52:34 +01:00
Bartek Kryza
c2d9596e7c Fixed simple template instantiation sequence diagram test case 2022-11-01 21:52:12 +01:00
Bartek Kryza
08d0431a14 Fixed template function sequence diagram test case 2022-10-30 10:17:47 +01:00
Bartek Kryza
4f1a143a1b Fixed base sequence diagram test cases after refactor 2022-10-24 23:52:54 +02:00
Bartek Kryza
ad5ec1c973 Added participant generation in sequence diagrams 2022-10-24 01:09:40 +02:00
Bartek Kryza
1fe9918c1a Initial refactoring of sequence diagram visitor to include participants 2022-10-23 22:36:53 +02:00
Bartek Kryza
a2705b10d9 Added template function sequence diagram test case 2022-09-27 23:12:46 +02:00
Bartek Kryza
511c8d0f65 WIP 2022-09-26 19:21:51 +02:00
Bartek Kryza
9280155d40 Updated test cases documentation 2022-09-24 01:12:28 +02:00
Bartek Kryza
65c813a70e Fixed comment directives in test cases 2022-09-24 00:59:34 +02:00
Bartek Kryza
9c4a7f324d Releasing version 0.2.2 2022-09-23 22:34:26 +02:00
Bartek Kryza
5948783deb Updated test cases documentation 2022-09-22 23:42:46 +02:00
Bartek Kryza
7b20a491b4 Added paragaph array to clang comment parser 2022-09-22 19:33:24 +02:00
Bartek Kryza
9bb2a6e8c9 Updated changelog 2022-09-22 19:30:57 +02:00
Bartek Kryza
0cdae33f1c Updated test cases documentation 2022-09-22 00:39:13 +02:00
Bartek Kryza
4449782fb5 Merge pull request #56 from bkryza/add-structured-comment-parsing
Add structured comment parsing
2022-09-22 00:37:07 +02:00
Bartek Kryza
59aa755e6f Added jinja template documentation example 2022-09-21 23:48:29 +02:00
Bartek Kryza
4caf7308b2 Fixed namespace exclusion filtering 2022-09-21 23:24:29 +02:00
Bartek Kryza
920388d84a Refactored comment parsing to clang comments 2022-09-18 23:57:22 +02:00
Bartek Kryza
e45458de62 Extended inja comment test case 2022-09-16 18:21:03 +02:00
Bartek Kryza
d406991681 Updated test cases documentation 2022-09-15 23:39:03 +02:00
Bartek Kryza
3bbaf91511 Fixed formatting 2022-09-15 23:36:56 +02:00
Bartek Kryza
17db587426 Added support for iterating over diagram elements from inja templates (fixes #54) 2022-09-15 23:36:29 +02:00
Bartek Kryza
693a09e20d Added test case for accessing comments from inja templates 2022-09-15 23:35:38 +02:00
Bartek Kryza
371ad836eb Updated test cases documentation 2022-09-14 00:33:02 +02:00
Bartek Kryza
9a19cd50d7 Changed naming of elements nested in template declarations 2022-09-14 00:31:02 +02:00
Bartek Kryza
0d5091418e Fixed t40001 test case on archlinux 2022-09-13 18:47:42 +02:00
Bartek Kryza
c07809147d Updated test cases documentation 2022-09-13 01:21:23 +02:00
Bartek Kryza
001b093175 Extended nested class test case with nested template instantiations 2022-09-13 01:18:30 +02:00
Bartek Kryza
56e1010142 Updated version badge 2022-09-10 21:43:27 +02:00
Bartek Kryza
b3382d8f04 Updated test cases documentation 2022-09-10 21:07:46 +02:00
Bartek Kryza
15bbb595b7 Updated changelog 2022-09-10 21:06:00 +02:00
Bartek Kryza
f93cbe8ff2 Fixed handling of nested classes in relative namespaces 2022-09-10 19:28:35 +02:00
Bartek Kryza
ae1735855a Updated test cases documentation 2022-09-10 01:41:00 +02:00
Bartek Kryza
6842825402 Fixed handling of nested classes in templates and anonymous nested structs 2022-09-10 01:38:52 +02:00
Bartek Kryza
282481920b Extended nested classes and enums test case t00004 2022-09-08 23:47:59 +02:00
Bartek Kryza
0f49197a69 Updated README 2022-09-06 23:21:59 +02:00
Bartek Kryza
be923fecbd Added contributing guidelines 2022-09-06 19:26:00 +02:00
Bartek Kryza
68818755e5 Updated test cases documentation 2022-09-05 23:45:53 +02:00
Bartek Kryza
27cf833b0d Changed config option template_aliases to type_aliases 2022-09-05 23:43:57 +02:00
Bartek Kryza
381994df99 Added test case for configurable type aliases 2022-09-05 23:35:01 +02:00
Bartek Kryza
f311aa37af Updated test cases documentation 2022-09-04 18:33:19 +02:00
Bartek Kryza
d887353c24 Fixed handling of nested and anonymous classes 2022-09-04 18:15:29 +02:00
Bartek Kryza
4d4eb02e57 Updated release 0.2.0 info 2022-09-03 19:55:17 +02:00
Bartek Kryza
3cd6f2c36f Merge pull request #52 from bkryza/refactor-to-libtooling-refactor-getid
Refactor to libtooling refactor getid
2022-09-03 19:00:56 +02:00
Bartek Kryza
082f454b42 Refactored sequence diagram visitor 2022-09-03 18:05:34 +02:00
Bartek Kryza
0f9fcb2671 Updated test cases documentation 2022-09-03 11:15:58 +02:00
Bartek Kryza
9937262996 Fixed formatting 2022-09-03 11:14:30 +02:00
Bartek Kryza
e7cb6c0fb2 Fixed include graph diagram visitor 2022-09-03 11:13:59 +02:00
Bartek Kryza
3145d30acf Updated clang-uml uml configs 2022-09-02 23:26:58 +02:00
Bartek Kryza
963ca76156 Added root directory for glob resolution 2022-09-02 23:18:40 +02:00
Bartek Kryza
dbb4dd3caa Fixed glob resolution with multiple threads 2022-09-02 23:18:16 +02:00
Bartek Kryza
9276953664 Fixed package diagram generator 2022-08-31 21:28:13 +02:00
Bartek Kryza
c5e4168cf3 Fixed include diagram visitor 2022-08-31 21:27:58 +02:00
Bartek Kryza
86c5444407 Ensure class methods and fields are only added once 2022-08-31 18:44:54 +02:00
Bartek Kryza
0cef28ac02 Fixed building and tests on macos 2022-08-30 21:39:40 +02:00
Bartek Kryza
f1c0361c46 Fixing build on GitHub Actions 2022-08-29 23:11:39 +02:00
Bartek Kryza
577ce74c2c Updated README 2022-08-28 21:52:40 +02:00
Bartek Kryza
4c4a510af0 Updated test cases documentation 2022-08-28 21:42:33 +02:00
Bartek Kryza
feb19c23c7 Cleaned up code 2022-08-28 21:23:47 +02:00
Bartek Kryza
0701a082e9 All test cases passing 2022-08-28 14:38:46 +02:00
Bartek Kryza
1cf3ceff7b Refactored build_template_instantiation method 2022-08-25 13:53:34 +02:00
Bartek Kryza
dfd3fee444 Fixed formatting 2022-08-24 21:42:28 +02:00
Bartek Kryza
e37d2d6683 Fixed t00014 2022-08-24 21:41:57 +02:00
Bartek Kryza
0cd6a9d36e WIP 2022-08-12 00:57:12 +02:00
Bartek Kryza
e4289c4cab Refactoring getID to a unique global ID for entities 2022-08-11 17:04:16 +02:00
Bartek Kryza
d63426e574 Removed deprecated cmake options 2022-08-08 18:28:31 +02:00
Bartek Kryza
59089c2598 Fixed formatting 2022-08-08 18:25:35 +02:00
Bartek Kryza
b066348429 Fixed compilation on macos 2022-08-08 18:21:08 +02:00
Bartek Kryza
e3434bfc59 Updated test cases documentation 2022-08-07 23:17:44 +02:00
Bartek Kryza
ae7ef11e43 Added test case for recursive variadic template specialization 2022-08-07 23:09:44 +02:00
Bartek Kryza
1844b992aa Added LLVM_VERSION make option 2022-08-06 13:12:03 +02:00
Bartek Kryza
5cdbb364b0 Fixed sequence diagram test cases 2022-08-06 12:39:42 +02:00
Bartek Kryza
cc0119d079 Updated LLVM cmake detection 2022-08-03 23:45:51 +02:00
Bartek Kryza
487e5d435b Removed cppast dependency 2022-08-03 22:13:27 +02:00
Bartek Kryza
5917d341e2 Fixed LLVM library dir in CMakeLists 2022-08-03 01:28:40 +02:00
Bartek Kryza
777f4848fd Fixed formatting 2022-08-03 01:05:19 +02:00
Bartek Kryza
392be99055 Fixed include diagram test cases 2022-08-03 01:05:01 +02:00
Bartek Kryza
cd9d9cf5a7 Refactored id generation 2022-07-31 17:59:59 +02:00
Bartek Kryza
913ade2349 Fixed formatting 2022-07-31 16:15:16 +02:00
Bartek Kryza
7274809561 Fixed package diagram generation 2022-07-31 16:14:36 +02:00
Bartek Kryza
79942e06d7 Add id to class diagram packages 2022-07-31 00:59:26 +02:00
Bartek Kryza
dd85cfc19b Fixed formatting 2022-07-31 00:42:13 +02:00
Bartek Kryza
37757b2ccc Fixed class diagram test cases 2022-07-31 00:41:51 +02:00
Bartek Kryza
2662c4d2ac Fixed t00014 2022-07-29 00:57:01 +02:00
Bartek Kryza
cf1054aa83 Fixed template template handling 2022-07-28 00:35:14 +02:00
Bartek Kryza
3e4beef80b Fixed building main 2022-07-24 23:46:52 +02:00
Bartek Kryza
1cf271fedf Fixed up to 33 2022-07-24 13:28:19 +02:00
Bartek Kryza
8efbb2446e Fixed up to 26 2022-07-24 00:10:08 +02:00
Bartek Kryza
d65864adaf Fixed up to t00013 2022-07-23 13:48:15 +02:00
Bartek Kryza
b5b116a14d Fixed up to t00011 2022-07-21 23:47:12 +02:00
Bartek Kryza
673b08f027 Fixed t00007 2022-07-19 23:48:58 +02:00
Bartek Kryza
8a7e89cb63 WIP 2022-07-18 23:41:37 +02:00
Bartek Kryza
88a87edc42 First passing test cases using libtooling visitor 2022-07-17 11:48:00 +02:00
Bartek Kryza
0f91316fd3 Updated README 2022-07-09 23:03:15 +02:00
Bartek Kryza
6359272fed Automatically create output directory if not exists 2022-06-26 15:49:43 +02:00
Bartek Kryza
bfa7a427c6 Updated README 2022-06-26 15:39:11 +02:00
Bartek Kryza
09b25065bf Fixed empty entity name errors 2022-06-26 15:37:03 +02:00
Bartek Kryza
ae973c38f5 Moved examples to separate repository 2022-06-26 15:36:55 +02:00
Bartek Kryza
c571daa3bb Merge pull request #47 from bkryza/fix-root-namespace-handling
Fix root namespace handling
2022-06-24 16:10:12 +02:00
Bartek Kryza
c42a49e95b Updated test cases documentation 2022-06-24 15:54:15 +02:00
Bartek Kryza
be22fde24a Updated CHANGELOG 2022-06-24 15:53:29 +02:00
Bartek Kryza
345619123b Updated README 2022-06-24 15:51:26 +02:00
Bartek Kryza
96534f8e42 Fixed friend class root namespace handling 2022-06-22 23:11:52 +02:00
Bartek Kryza
934a8edbbf Updated README 2022-06-22 22:16:53 +02:00
Bartek Kryza
824c6ff5fe Disable verbose make 2022-06-22 22:16:36 +02:00
Bartek Kryza
5119079b69 Removed constructor and destructor static prefix 2022-06-21 22:02:49 +02:00
Bartek Kryza
11b558b7c2 Updated test case to check for std::uint8_t type detection 2022-06-21 21:54:10 +02:00
Bartek Kryza
4b8a727cda Updated cppast ref 2022-06-21 21:53:26 +02:00
Bartek Kryza
c0aafd0e6d Added simple test case template generator 2022-06-21 01:08:55 +02:00
Bartek Kryza
1fc225d20e Updated test cases documentation 2022-06-18 18:35:18 +02:00
Bartek Kryza
fd8f131352 Added test case for handling root namespace with package generation 2022-06-18 18:32:31 +02:00
Bartek Kryza
4035cbbb2f Updated test cases documentation 2022-06-18 18:14:58 +02:00
Bartek Kryza
01a93211bb Fixed formatting 2022-06-18 17:56:26 +02:00
Bartek Kryza
87d381f52a Added root namespace test case 2022-06-18 17:53:52 +02:00
Bartek Kryza
c82002e8ee Fixed root namespace handling 2022-06-18 17:48:57 +02:00
Bartek Kryza
bb689db81a Merge pull request #44 from bkryza/v0.1.0
V0.1.0
2022-06-15 00:00:28 +02:00
1142 changed files with 182816 additions and 23813 deletions

68
.clang-tidy Normal file
View File

@@ -0,0 +1,68 @@
Checks: >-
*,
-altera*,
-*braces-around-statements,
-*osx*,
-abseil*,
-android*,
-bugprone-branch-clone,
-bugprone-exception-escape,
-bugprone-easily-swappable-parameters,
-clang-analyzer-alpha.*,
-clang-analyzer-core.StackAddressEscape,
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
-cppcoreguidelines-macro-usage,
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
-cppcoreguidelines-special-member-functions,
-cppcoreguidelines-avoid-magic-numbers,
-cppcoreguidelines-non-private-member-variables-in-classes,
-cert-env33-c,
-cert-err58-cpp,
-cert-dcl58-cpp,
-fuchsia*,
-hicpp-no-array-decay,
-hicpp-special-member-functions,
-google-readability-todo,
-google-default-arguments,
-google-explicit-constructor,
-google-build-using-namespace,
-hicpp-signed-bitwise,
-hicpp-explicit-conversions,
-llvmlibc-*,
-llvm-header-guard,
-llvm-namespace-comment,
-misc-no-recursion,
-misc-non-private-member-variables-in-classes,
-misc-const-correctness,
-modernize-use-nodiscard,
-modernize-use-trailing-return-type,
-modernize-concat-nested-namespaces,
-mpi*,
-objc*,
-openmp*,
-readability-inconsistent-declaration-parameter-name,
-readability-identifier-length,
-readability-identifier-naming,
-readability-redundant-smartptr-get,
-readability-convert-member-functions-to-static,
-readability-function-cognitive-complexity,
-readability-const-return-type,
-readability-simplify-boolean-expr,
-readability-make-member-function-const,
-darwin*,
-zircon*
WarningsAsErrors: '*'
HeaderFilterRegex: 'src'
CheckOptions:
- key: readability-identifier-naming.PrivateMemberSuffix
value: '_'
- key: readability-identifier-naming.PublicMemberSuffix
value: ''
- key: performance-unnecessary-value-param.AllowedTypes
value: shared_ptr;weak_ptr
- key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
value: 1
- key: hicpp-special-member-functions.AllowSoleDefaultDtor
value: 1
- key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor
value: 1

View File

@@ -1,22 +1,77 @@
compilation_database_dir: debug
output_directory: docs/diagrams
comment_parser: clang
remove_compile_flags:
- -Wno-class-memaccess
generate_links:
link: 'https://github.com/bkryza/clang-uml/blob/{{ git.commit }}/{{ element.source.path }}#L{{ element.source.line }}'
tooltip: '{% if "comment" in element %}{{ abbrv(trim(replace(element.comment, "\n+", " ")), 256) }}{% else %}{{ element.name }}{% endif %}'
link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}"
tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}"
diagrams:
main_package:
include!: uml/main_package_diagram.yml
# Class diagrams
architecture_visitors_class:
include!: uml/class/architecture_visitors_class.yml
config_class:
include!: uml/config_class_diagram.yml
include!: uml/class/config_class.yml
config_context_class:
include!: uml/class/config_context_class.yml
compilation_database_context_class:
include!: uml/class/compilation_database_context_class.yml
inheritable_diagram_options_context_class:
include!: uml/class/inheritable_diagram_options_context_class.yml
diagram_config_hierarchy_class:
include!: uml/class/diagram_config_hierarchy_class.yml
diagram_hierarchy_class:
include!: uml/class/diagram_hierarchy_class.yml
decorated_element_hierarchy_class:
include!: uml/class/decorated_element_hierarchy_class.yml
stylable_element_hierarchy_class:
include!: uml/class/stylable_element_hierarchy_class.yml
source_location_hierarchy_class:
include!: uml/class/source_location_hierarchy_class.yml
filter_visitor_hierarchy_class:
include!: uml/class/filter_visitor_hierarchy_class.yml
diagram_filter_context_class:
include!: uml/class/diagram_filter_context_class.yml
nested_trait_hierarchy_class:
include!: uml/class/nested_trait_hierarchy_class.yml
package_hierarchy_class:
include!: uml/class/package_hierarchy_class.yml
source_file_hierarchy_class:
include!: uml/class/source_file_hierarchy_class.yml
template_trait_hierarchy_class:
include!: uml/class/template_trait_hierarchy_class.yml
comment_visitor_hierarchy_class:
include!: uml/class/comment_visitor_hierarchy_class.yml
decorators_class:
include!: uml/decorators_class_diagram.yml
include!: uml/class/decorators_class.yml
relationship_context_class:
include!: uml/class/relationship_context_class.yml
common_model_class:
include!: uml/common_model_class_diagram.yml
include!: uml/class/common_model_class.yml
class_model_class:
include!: uml/class_model_class_diagram.yml
include!: uml/class/class_model_class.yml
diagram_element_hierarchy_class:
include!: uml/class/diagram_element_hierarchy_class.yml
sequence_model_class:
include!: uml/sequence_model_class_diagram.yml
include!: uml/class/sequence_model_class.yml
package_model_class:
include!: uml/package_model_class_diagram.yml
include!: uml/class/package_model_class.yml
# Sequence diagrams
main_sequence:
include!: uml/sequence/main_sequence.yml
load_config_sequence:
include!: uml/sequence/load_config_sequence.yml
cli_handle_options_sequence:
include!: uml/sequence/cli_handle_options_sequence.yml
diagram_generate_generic_sequence:
include!: uml/sequence/diagram_generate_generic_sequence.yml
class_diagram_generator_sequence:
include!: uml/sequence/class_diagram_generator_sequence.yml
template_builder_sequence:
include!: uml/sequence/template_builder_sequence.yml
# Package diagrams
architecture_package:
include!: uml/package/architecture_package.yml
# Include diagrams
include_graph:
include!: uml/include_diagram.yml
include!: uml/include/include.yml

View File

@@ -1,33 +1,54 @@
name: build
on: [push, pull_request]
on:
push:
paths-ignore:
- 'docs/**'
- 'packaging/**'
- 'util/**'
- 'uml/**'
- '**.md'
branches-ignore:
- 'noactions/*'
pull_request:
paths-ignore:
- 'docs/**'
- 'packaging/**'
- 'util/**'
- 'uml/**'
- '**.md'
- '**.svg'
- '**.png'
branches-ignore:
- 'noactions/*'
jobs:
build-ubuntu:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
submodules: recursive
uses: actions/checkout@v3
- name: Update package database
run: sudo apt -y update
- name: Install deps
run: sudo apt -y install git make gcc-10 g++-10 ccache cmake libyaml-cpp-dev clang-12 libclang-12-dev libclang-cpp12-dev lcov
run: sudo apt -y install git make pkg-config gcc-11 g++-11 ccache cmake libyaml-cpp-dev llvm-15 clang-15 libclang-15-dev libclang-cpp15-dev clang-format-15 lcov zlib1g-dev libunwind-dev libdw-dev
- name: Select g++ version
run: |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 11
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 11
- name: Check code formatting
run: |
make check-formatting
- name: Build and unit test
run: |
NUMPROC=2 CMAKE_CXX_FLAGS="--coverage -fno-inline" CMAKE_EXE_LINKER_FLAGS="-lgcov --coverage" make test
NUMPROC=2 CMAKE_CXX_FLAGS="--coverage -fno-inline" CMAKE_EXE_LINKER_FLAGS="-lgcov --coverage" LLVM_VERSION=15 make test
- name: Run coverage
run: |
lcov -c -d debug -o coverage.info
lcov -e coverage.info "$PWD/src/*" -o coverage-src.info
lcov -l coverage-src.info
- name: Upload coverage
uses: codecov/codecov-action@v2
uses: codecov/codecov-action@v3
with:
files: coverage-src.info
name: clang-uml

11
.gitignore vendored
View File

@@ -6,19 +6,27 @@ CMakeScripts
Testing
cmake_install.cmake
install_manifest.txt
compile_commands.json
/compile_commands.json
CTestTestfile.cmake
Session.vim
_deps
_tidy
/build/
lib/
bin/
*.swp
*.bak
/puml/
/debug/
/release/
/debug_tidy
/.cache
docs/diagrams
docs/doxygen/html
docs/doxygen/xml
docs/doxygen/latex
docs/contributing.md
docs/changelog.md
coverage*.info
@@ -30,3 +38,4 @@ packaging/conda/meta.yaml
.idea/
cmake-build-
cmake-build-*
.run/

4
.gitmodules vendored
View File

@@ -1,4 +0,0 @@
[submodule "thirdparty/cppast"]
path = thirdparty/cppast
url = https://github.com/bkryza/cppast
branch = handle-exposed-template-arguments

3
AUTHORS.md Normal file
View File

@@ -0,0 +1,3 @@
# Authors
Bartek Kryza <bkryza@gmail.com>

View File

@@ -1,4 +1,99 @@
# CHANGELOG
* Enabled manual call expression injection through comments (#196)
* Added support for generating sequence diagram notes from comments (#194)
* Added Bash and Zsh autocomplete scripts (#193)
* Updated `clang-uml` to work with LLVM 17 (#190)
* Fixed handling of compilation databases with relative header paths (#189)
* Excluded package diagram dependencies on parent and child packages (186)
* Excluded package diagram relationships to rejected packages (#185)
* Added 'title' diagram property (#184)
* Make sure sequence diagram messages generated during static variable
initialization are rendered only once (#183)
### 0.4.0
* Added MermaidJS diagram generators (#27)
### 0.3.9
* Added `from_to` and `to` location constraints to sequence diagrams (#154)
* Fixed 'else if' statement generation in sequence diagrams (#81)
* Implemented removal of redundant dependency relationships (#28)
* Add option to disable generation of dependency relation to template
arguments (#141)
* Added configuration file validation (#57)
### 0.3.8
* Added option to display block conditional statements in sequence diagrams (#162)
* Added Doxygen documentation (#161)
* Added diagram generation progress indicators options (#158)
* Extended source_location with column and translation unit info
### 0.3.7
* Added regexp support to selected diagram filters (#51, #132)
* Added method type diagram filter (#145)
* Added default method grouping and sorting in class diagrams (#36)
* Improved generation of method attributes (e.g. constexpr, noexcept) (#142)
### 0.3.6
* Added generation of packages in class and package diagrams from
filesystem directories (#144)
* Improved handling of class template specializations and their
relationships (#140)
* Fixed handling of C99 typedef structs (#138)
### 0.3.5
* Added `--query-driver` option to automatically detect system include paths (#109)
* Fixed add_compile_flags and added remove_compile_flags config options (#130)
* Added rendering of template specialization fields and methods (#128)
* Improved template specialization/instantiation matching based on deduced
context
### 0.3.4
* Added diagram metadata to PlantUML and JSON generators (#27)
* Improved template specialization matching for variadic and function
template parameters (#118)
* Fixed compilation and tests on LLVM 16 (#108)
### 0.3.3
* Added 'add_compile_flags' config options (#112)
* Added JSON generator (#114)
* Added diagram templates support (#105)
* Added parents (base classes) diagram filter
* Fixed namespace handling for nested template specializations
### 0.3.2
* Added initial support for C++20 concept rendering (#96)
* Added support for plain C11 translation units (#97)
* Added 'row' and 'column' layout hints for aligning elements (#90)
* Added 'together' layout hint for grouping elements (#43)
* Enabled adding notes to class methods and members (#87)
* Improved rendering of template methods in class diagrams (#83)
### 0.3.1
* Added relationship deduction from `auto` return types which are template
specializations (#82)
* Fixed lambda names in class diagrams to be based on relative paths
with respect to `relative_to` config option (#78)
* Fixed relative paths in config files to be relative to the parent of
the configuration file by default (#69)
* Added command line option (--dump-config) to print effective config (#77)
* Added support for building with Microsoft Visual Studio
### 0.3.0
* Added support for sequence diagrams with template code
### 0.2.2
* Added structured comment parsing (#32)
* Fixed namespace exclusive filtering
### 0.2.1
* Fixed handling of classes nested in templates and anonymous nested structs
* Fixed handling of configurable type aliases
### 0.2.0
* Refactored translation units visitors from libclang to Clang LibTooling (#50)
* Fixed root namespace handling (#45)
* Removed `static` prefix from constructors
### 0.1.0
* Initial release
* Initial release

View File

@@ -1,95 +1,222 @@
cmake_minimum_required(VERSION 3.12)
project(clang-uml)
#
# Project name
#
project(clang-uml C CXX)
#
# CMake standard defines
#
set(CMAKE_DISABLE_SOURCE_CHANGES ON)
set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_VERBOSE_MAKEFILE OFF)
set(CMAKE_FIND_DEBUG_MODE OFF)
if(UNIX AND NOT APPLE)
set(LINUX TRUE)
endif()
#
# C++ setup
#
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
#
# clang-uml custom defines
#
set(CLANG_UML_INSTALL_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include)
set(CLANG_UML_INSTALL_BIN_DIR ${PROJECT_SOURCE_DIR}/bin)
set(UML_HEADERS_DIR ${PROJECT_SOURCE_DIR}/src/uml)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
if(APPLE)
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm"
OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64")
set(HOMEBREW_PREFIX "/opt/homebrew")
else()
set(HOMEBREW_PREFIX "/usr/local")
endif()
endif(APPLE)
option(LLVM_CONFIG_PATH "Path to custom llvm-config executable")
#
# CMake build options
#
option(LINK_LLVM_SHARED "Should LLVM be linked using shared libraries" ON)
set(LLVM_VERSION CACHE STRING "Major LLVM version to use (e.g. 15)")
option(GIT_VERSION "clang-uml version" "0.1.0")
#
# Setup version string
#
include(GitVersion)
setup_git_version()
message(STATUS "clang-uml version: "
"${GIT_VERSION_MAJOR}.${GIT_VERSION_MINOR}.${GIT_VERSION_PATCH}")
if(LLVM_CONFIG_PATH)
#
# Setup LLVM
#
message(STATUS "Checking for LLVM and Clang...")
if(LLVM_PREFIX)
message(STATUS "Using llvm-config from ${LLVM_CONFIG_PATH}")
set(LIBCLANG_LLVM_CONFIG_EXECUTABLE ${LLVM_CONFIG_PATH})
set(LLVM_CONFIG_BINARY ${LLVM_CONFIG_PATH})
endif(LLVM_CONFIG_PATH)
endif(LLVM_PREFIX)
#set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(LLVM ${LLVM_VERSION} CONFIG REQUIRED)
list(APPEND CMAKE_MODULE_PATH ${LLVM_DIR})
include(AddLLVM)
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
message(STATUS "LLVM library dir: ${LLVM_LIBRARY_DIR}")
if(MSVC)
# LLVM_BUILD_LLVM_DYLIB is not available on Windows
set(LINK_LLVM_SHARED NO)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif(MSVC)
if(LINK_LLVM_SHARED)
set(LIBTOOLING_LIBS clang-cpp LLVM)
else(LINK_LLVM_SHARED)
set(LIBTOOLING_LIBS
clangLex
clangFrontend
clangSerialization
clangDriver
clangParse
clangSema
clangSupport
clangAnalysis
clangAST
clangBasic
clangEdit
clangLex
clangTooling
LLVMipo
LLVMScalarOpts
LLVMInstCombine
LLVMTransformUtils
LLVMAnalysis
LLVMTarget
LLVMOption
LLVMMCParser
LLVMMC
LLVMObject
LLVMBitReader
LLVMCore
LLVMSupport)
if(MSVC)
if(${LLVM_PACKAGE_VERSION} VERSION_LESS "15.0")
list(REMOVE_ITEM LIBTOOLING_LIBS clangSupport)
else()
list(APPEND LIBTOOLING_LIBS
LLVMWindowsDriver
LLVMWindowsManifest)
endif()
endif(MSVC)
endif(LINK_LLVM_SHARED)
if("${LIBTOOLING_LIBS}" STREQUAL "")
message(FATAL_ERROR "Failed to find LibTooling libraries!")
else()
message(STATUS "Found LibTooling libraries: ${LIBTOOLING_LIBS}")
endif()
if(APPLE OR (LLVM_VERSION_MAJOR GREATER_EQUAL 16))
set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES
${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES})
endif()
#
# Setup custom compile options depending on various compiler
# and environment quirks
#
if(LLVM_VERSION_MAJOR GREATER_EQUAL 17)
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(CUSTOM_COMPILE_OPTIONS "-Wno-class-memaccess")
endif()
endif()
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CUSTOM_COMPILE_OPTIONS
"${CUSTOM_COMPILE_OPTIONS} -Wno-unused-private-field")
endif()
#
# Setup threads library
#
find_package(Threads REQUIRED)
#
# Setup yaml-cpp
#
message(STATUS "Checking for yaml-cpp...")
find_package(yaml-cpp REQUIRED)
if(APPLE)
message(STATUS "Checking for libclang...")
set(LLVM_PREFERRED_VERSION 12.0.0)
# Add
# -DLLVM_CONFIG_PATH=/path/to/llvm-config
# to use custom LLVM version
find_package(LibClang REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -std=c++17 ${LIBCLANG_CXXFLAGS}")
message(STATUS "Using CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
# Thirdparty sources
set(THIRDPARTY_HEADERS_DIR ${PROJECT_SOURCE_DIR}/thirdparty/)
add_subdirectory(thirdparty/cppast)
find_package(LLVM REQUIRED CONFIG)
set(CLANG_INCLUDE_DIRS "llvm/clang/include")
set(CLANG_LIBS clang)
# Configure executable version
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/src/version)
configure_file(src/version.h.in ${PROJECT_BINARY_DIR}/src/version/version.h)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
execute_process(COMMAND gcc --print-file-name=include
OUTPUT_STRIP_TRAILING_WHITESPACE
OUTPUT_VARIABLE GCC_STDDEF_INCLUDE)
message(STATUS "FOUND GCC STDDEF INCLUDE ${GCC_STDDEF_INCLUDE}")
include_directories(${GCC_STDDEF_INCLUDE})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${GCC_STDDEF_INCLUDE}")
find_package(PkgConfig)
if(PKG_CONFIG_FOUND)
pkg_check_modules(YAML_CPP yaml-cpp)
find_path(YAML_CPP_INCLUDE_DIR
NAMES yaml.h
PATHS ${YAML_CPP_INCLUDE_DIR} ${HOMEBREW_PREFIX}/include/yaml-cpp)
find_library(YAML_CPP_LIBRARY
NAMES yaml-cpp
PATHS ${YAML_CPP_LIBRARIES} ${HOMEBREW_PREFIX}/lib)
set(YAML_CPP_LIBRARY_DIR ${HOMEBREW_PREFIX}/lib)
endif(PKG_CONFIG_FOUND)
elseif(MSVC)
set(YAML_CPP_LIBRARIES "yaml-cpp")
else()
find_package(yaml-cpp REQUIRED)
endif()
if("${YAML_CPP_LIBRARIES}" STREQUAL "")
message(FATAL_ERROR "Failed to find yaml-cpp library!")
else()
message(STATUS "Found yaml-cpp libraries: ${YAML_CPP_LIBRARIES}")
endif()
link_directories(${LLVM_LIBRARY_DIR} ${YAML_CPP_LIBRARY_DIR})
#
# Setup libdw and libunwind
#
if(LINUX AND (CMAKE_BUILD_TYPE MATCHES Debug))
find_package(PkgConfig REQUIRED)
pkg_check_modules(DW REQUIRED IMPORTED_TARGET libdw)
pkg_check_modules(UNWIND REQUIRED IMPORTED_TARGET libunwind)
set(BACKWARD_CPP_LIBRARIES PkgConfig::DW PkgConfig::UNWIND)
set(ENABLE_BACKWARD_CPP -DENABLE_BACKWARD_CPP)
endif()
#
# Setup thirdparty sources
#
set(THIRDPARTY_HEADERS_DIR ${PROJECT_SOURCE_DIR}/thirdparty/)
#
# Setup include directories
#
include_directories(${LLVM_INCLUDE_DIRS})
include_directories(${CLANG_UML_INSTALL_INCLUDE_DIR})
include_directories(${YAML_CPP_INCLUDE_DIR})
include_directories(${YAML_CPP_INCLUDE_DIRS})
include_directories(${UML_HEADERS_DIR})
include_directories(${THIRDPARTY_HEADERS_DIR})
include_directories(${THIRDPARTY_HEADERS_DIR}/cppast/include)
include_directories(${THIRDPARTY_HEADERS_DIR}/cppast/external/type_safe/include)
include_directories(${THIRDPARTY_HEADERS_DIR}/cppast/external/type_safe/external/debug_assert)
include_directories(${PROJECT_SOURCE_DIR}/src/)
include_directories(${PROJECT_BINARY_DIR}/src/version)
add_subdirectory(src)
file(GLOB_RECURSE SOURCES src/*.cc include/*.h)
set(MAIN_SOURCE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cc)
list(REMOVE_ITEM SOURCES ${MAIN_SOURCE_FILE})
add_library(clang-umllib OBJECT ${SOURCES})
add_executable(clang-uml ${MAIN_SOURCE_FILE})
target_link_libraries(clang-uml ${LIBCLANG_LIBRARIES} ${YAML_CPP_LIBRARIES} cppast clang-umllib Threads::Threads)
target_compile_features(clang-uml PRIVATE cxx_std_17)
include(GNUInstallDirs)
install(TARGETS clang-uml DESTINATION ${CMAKE_INSTALL_BINDIR})
install(FILES LICENSE.md DESTINATION ${CMAKE_INSTALL_DOCDIR})
install(FILES README.md DESTINATION ${CMAKE_INSTALL_DOCDIR})
#
# Enable testing via CTest
enable_testing()
add_subdirectory(tests)
#
option(BUILD_TESTS "" ON)
if(BUILD_TESTS)
enable_testing()
add_subdirectory(tests)
endif(BUILD_TESTS)

93
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,93 @@
# Contributing to clang-uml
Thanks for taking interest in `clang-uml`!
> Please, make sure you're ok with
> [Code of conduct](./CODE_OF_CONDUCT.md)
> and [LICENSE](./LICENSE.md)
## If you found a bug
* Optimally, fork the repository, create some branch, and add a test case reproducing the issue (it's easy!) -
check what is the highest test case number in a specific category and use the test case generation script with
a consecutive number:
```bash
# To generate a class diagram test case with number 50
./util/generate_test_case.py class 50
```
This will generate a new test case template in the `tests/t00050` directory. In `tests/t00050/t00050.cc` write
the C++ code which triggers the issue, and in `tests/t00050/test_case.h` write the test checks.
The test case must be also added manually to `tests/test_cases.cc`:
```cpp
// ...
#include "t00047/test_case.h"
#include "t00048/test_case.h"
#include "t00049/test_case.h"
#include "t00050/test_case.h" // <<<
// ...
```
Finally, create an issue with a link to your branch with the new test case.
* If the issue occurs with some publicly available code (e.g. available on GitHub), please create a new issue
and describe the steps necessary to reproduce the issue including:
* Link to source code and specific version used
* `clang-uml` version used
* Operating system, compiler and linked LLVM version
* `.clang-uml` configuration file used
* Exact command line used to execute `clang-uml`
* Excerpt from the console logs
* If the code on which `clang-uml` fails cannot be shared, please create an issue and try to provide at least:
* `clang-uml` version used
* Operating system, compiler and linked LLVM version
* `.clang-uml` configuration file used
* Exact command line used to execute `clang-uml`
* Excerpt from the console logs
* Description of the code fragment on which the error occurs (e.g. a variadic template or anonymous struct)
## If you would like to fix a bug
* Fork the repository and create a branch
* Create a new test case which triggers the bug (see above how to create a new test case)
```bash
# Make sure the test case fails
make test
```
* Fix the code so that the test case passes
```bash
# Again, make sure the test case fails and other still pass
make test
```
* Commit the changes including all new files
* Make sure the code is properly formatted:
```bash
# Requires docker to ensure consistent formatting through specific clang-format version
make format
git add . && git commit -m "Fixed formatting"
```
* Make sure the code doesn't introduce any `clang-tidy` warnings:
```bash
make tidy
```
* Create a pull request from your branch to `master` branch
## If you would like to add a feature
* First, please check if the feature isn't already mentioned in the issues or existing PR's
* If not, create a new issue and describe as good as possible the new feature including:
* Rationale
* If the feature adds new configuration options, provide an example of new configuration file
* If the feature adds a new diagram feature, please add an example C++ code and expected PlantUML diagram which should
be generated through the feature
* To maximize the chances of accepting the new feature, wait for some discussion on the issue before implementing
the feature to ensure we're on the same page as to its purpose and possible implementation
* Next, implement the feature, please try to adapt to the overall code style:
* 80-character line width
* snakes not camels
* use `make format` before submitting PR to ensure consistent formatting (requires Docker)
* use `make tidy` to check if your code doesn't introduce any `clang-tidy` warnings
* Add test case (or multiple test cases), which cover the new feature
* Finally, create a pull request!

2676
Doxyfile Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -179,7 +179,7 @@ recommend that a file or class name and description of purpose be included on
the same “printed page” as the copyright notice for easier identification within
third-party archives.
Copyright [yyyy] [name of copyright owner]
Copyright 2021-2023 Bartek Kryza <bkryza@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

View File

@@ -1,6 +1,6 @@
# Makefile
#
# Copyright (c) 2021-2022 Bartek Kryza <bkryza@gmail.com>
# Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -20,17 +20,30 @@
.DEFAULT_GOAL := debug
NUMPROC ?= $(shell nproc)
OS_UNAME := $(shell uname -s)
LLVM_CONFIG_PATH ?=
ifeq ($(OS_UNAME),Linux)
NUMPROC ?= $(shell nproc)
else ifeq ($(OS_UNAME),Darwin)
NUMPROC ?= $(shell sysctl -n hw.logicalcpu)
else
NUMPROC ?= 1
endif
LLVM_VERSION ?=
CMAKE_CXX_FLAGS ?=
CMAKE_EXE_LINKER_FLAGS ?=
GIT_VERSION ?= $(shell git describe --tags --always --abbrev=7)
PKG_VERSION ?= $(shell git describe --tags --always --abbrev=7 | tr - .)
GIT_COMMIT ?= $(shell git rev-parse HEAD)
GIT_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD)
DESTDIR ?=
.PHONY: clean
clean:
rm -rf debug release
rm -rf debug release debug_tidy
debug/CMakeLists.txt:
cmake -S . -B debug \
@@ -39,7 +52,7 @@ debug/CMakeLists.txt:
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_CXX_FLAGS="$(CMAKE_CXX_FLAGS)" \
-DCMAKE_EXE_LINKER_FLAGS="$(CMAKE_EXE_LINKER_FLAGS)" \
-DLLVM_CONFIG_PATH=$(LLVM_CONFIG_PATH)
-DLLVM_VERSION=${LLVM_VERSION}
release/CMakeLists.txt:
cmake -S . -B release \
@@ -48,12 +61,26 @@ release/CMakeLists.txt:
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS="$(CMAKE_CXX_FLAGS)" \
-DCMAKE_EXE_LINKER_FLAGS="$(CMAKE_EXE_LINKER_FLAGS)" \
-DLLVM_CONFIG_PATH=$(LLVM_CONFIG_PATH)
-DLLVM_VERSION=${LLVM_VERSION}
debug_tidy/CMakeLists.txt:
cmake -S . -B debug_tidy \
-DGIT_VERSION=$(GIT_VERSION) \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_BUILD_TYPE=Debug \
-DBUILD_TESTS=OFF \
-DCMAKE_CXX_FLAGS="$(CMAKE_CXX_FLAGS)" \
-DCMAKE_EXE_LINKER_FLAGS="$(CMAKE_EXE_LINKER_FLAGS)" \
-DLLVM_VERSION=${LLVM_VERSION}
debug: debug/CMakeLists.txt
echo "Using ${NUMPROC} cores"
make -C debug -j$(NUMPROC)
debug_tidy: debug_tidy/CMakeLists.txt
echo "Using ${NUMPROC} cores"
make -C debug_tidy -j$(NUMPROC)
release: release/CMakeLists.txt
make -C release -j$(NUMPROC)
@@ -63,18 +90,32 @@ test: debug
test_release: release
CTEST_OUTPUT_ON_FAILURE=1 make -C release test
test_plantuml: test
plantuml -tsvg debug/tests/puml/*.puml
install: release
make -C release install DESTDIR=${DESTDIR}
document_test_cases: test_plantuml
test_diagrams: test
mkdir -p debug/tests/diagrams/plantuml
mkdir -p debug/tests/diagrams/mermaid
plantuml -tsvg -nometadata -o plantuml debug/tests/diagrams/*.puml
python3 util/validate_json.py debug/tests/diagrams/*.json
python3 util/generate_mermaid.py debug/tests/diagrams/*.mmd
document_test_cases: test_diagrams
python3 util/generate_test_cases_docs.py
# Format generated SVG files
python3 util/format_svg.py docs/test_cases/*.svg
clanguml_diagrams: debug
mkdir -p docs/diagrams
debug/clang-uml
plantuml -tsvg docs/diagrams/*.puml
python3 util/format_svg.py docs/diagrams/*.svg
mkdir -p docs/diagrams/plantuml
mkdir -p docs/diagrams/mermaid
debug/src/clang-uml -g plantuml -g json -g mermaid -p
# Convert .puml files to svg images
plantuml -tsvg -nometadata -o plantuml docs/diagrams/*.puml
# Convert .mmd files to svg images
python3 util/generate_mermaid.py docs/diagrams/*.mmd
# Format generated SVG files
python3 util/format_svg.py docs/diagrams/plantuml/*.svg
python3 util/format_svg.py docs/diagrams/mermaid/*.svg
.PHONY: submodules
submodules:
@@ -89,14 +130,41 @@ init_compile_commands: debug
.PHONY: clang-format
clang-format:
docker run --rm -v $(CURDIR):/root/sources bkryza/clang-format-check:1.3
docker run --rm -v $(CURDIR):/root/sources bkryza/clang-format-check:1.4
.PHONY: format
format:
docker run --rm -v $(CURDIR):/root/sources bkryza/clang-format-check:1.3
docker run --rm -v $(CURDIR):/root/sources bkryza/clang-format-check:1.4
.PHONY: debug_tidy
tidy: debug_tidy
run-clang-tidy-15 -j $(NUMPROC) -p debug_tidy ./src
.PHONY: check-formatting
check-formatting:
./util/check_formatting.sh
.PHONY: iwyu_fixes
iwyu_fixes: debug
python3 $(shell which iwyu_tool.py) -p debug > debug/iwyu.out
python3 $(shell which fix_includes.py) -h --re_only="${PWD}/src/.*" < debug/iwyu.out
python3 $(shell which fix_includes.py) -h --re_only="${PWD}/tests/.*" < debug/iwyu.out
.PHONY: docs
docs:
make -C docs toc
.PHONY: doxygen
doxygen: docs
cp CONTRIBUTING.md docs/contributing.md
cp CHANGELOG.md docs/changelog.md
cp docs/diagrams/plantuml/*.svg docs/doxygen/html/
mkdir -p docs/doxygen/html/test_cases
cp docs/test_cases/*.svg docs/doxygen/html/test_cases/
../doxygen/_build/bin/doxygen
.PHONY: fedora/%
fedora/%:
mkdir -p packaging/_BUILD/fedora/$*
git archive --format=tar.gz --prefix=clang-uml-$(PKG_VERSION)/ v$(GIT_VERSION) >packaging/_BUILD/fedora/$*/clang-uml-$(PKG_VERSION).tar.gz
docker run --cpuset-cpus=0-7 -v $(PWD):$(PWD) fedora:$* sh -c "dnf install -y make git && cd ${PWD} && make OS=fedora DIST=$* VERSION=${PKG_VERSION} COMMIT=${GIT_COMMIT} BRANCH=${GIT_BRANCH} -C packaging rpm"

343
README.md

File diff suppressed because it is too large Load Diff

10
build.ps1 Normal file
View File

@@ -0,0 +1,10 @@
param ($Prefix="C:\clang-uml", $BuildType="Release")
cmake -S . -B $BuildType -DCMAKE_PREFIX_PATH="$Prefix" -Thost=x64
cmake --build $BuildType --config $BuildType
# Create compile commands in Visual Studio
# before running these tests
cd $BuildType
ctest -C $BuildType --output-on-failure
cd ..

View File

@@ -1,139 +0,0 @@
# FindLibClang
#
# This module searches libclang and llvm-config, the llvm-config tool is used to
# get information about the installed llvm/clang package to compile LLVM based
# programs.
#
# It defines the following variables
#
# ``LIBCLANG_LLVM_CONFIG_EXECUTABLE``
# the llvm-config tool to get various information.
# ``LIBCLANG_LIBRARIES``
# the clang libraries to link against to use Clang/LLVM.
# ``LIBCLANG_LIBDIR``
# the directory where the clang libraries are located.
# ``LIBCLANG_FOUND``
# true if libclang was found
# ``LIBCLANG_VERSION_STRING``
# version number as a string
# ``LIBCLANG_CXXFLAGS``
# the compiler flags for files that include LLVM headers
#
#=============================================================================
# Copyright (C) 2011, 2012, 2013 Jan Erik Hanssen and Anders Bakken
# Copyright (C) 2015 Christian Schwarzgruber <c.schwarzgruber.cs@gmail.com>
#
# This file is part of RTags (https://github.com/Andersbakken/rtags).
#
# RTags is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# RTags is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with RTags. If not, see <https://www.gnu.org/licenses/>.
if (NOT LIBCLANG_ROOT_DIR)
set(LIBCLANG_ROOT_DIR $ENV{LIBCLANG_ROOT_DIR})
endif ()
if (NOT LIBCLANG_LLVM_CONFIG_EXECUTABLE)
set(LIBCLANG_LLVM_CONFIG_EXECUTABLE $ENV{LIBCLANG_LLVM_CONFIG_EXECUTABLE})
if (NOT LIBCLANG_LLVM_CONFIG_EXECUTABLE)
find_program(LIBCLANG_LLVM_CONFIG_EXECUTABLE "llvm-config")
endif ()
if (NOT LIBCLANG_LLVM_CONFIG_EXECUTABLE)
if (APPLE)
execute_process(COMMAND brew --prefix llvm OUTPUT_VARIABLE BREW_LLVM_PATH RESULT_VARIABLE BREW_LLVM_RESULT)
if (NOT ${BREW_LLVM_RESULT} EQUAL 0)
set(BREW_LLVM_PATH "/usr/local/opt/llvm")
endif ()
string(STRIP ${BREW_LLVM_PATH} BREW_LLVM_PATH)
find_program(LIBCLANG_LLVM_CONFIG_EXECUTABLE NAMES llvm-config PATHS "${BREW_LLVM_PATH}/bin")
else ()
set(llvm_config_names llvm-config)
foreach(major RANGE 15 3)
list(APPEND llvm_config_names "llvm-config${major}" "llvm-config-${major}")
foreach(minor RANGE 9 0)
list(APPEND llvm_config_names "llvm-config${major}${minor}" "llvm-config-${major}.${minor}" "llvm-config-mp-${major}.${minor}")
endforeach ()
endforeach ()
find_program(LIBCLANG_LLVM_CONFIG_EXECUTABLE NAMES ${llvm_config_names} PATHS /usr/bin)
endif ()
endif ()
if (LIBCLANG_LLVM_CONFIG_EXECUTABLE)
message(STATUS "llvm-config executable found: ${LIBCLANG_LLVM_CONFIG_EXECUTABLE}")
endif ()
endif ()
if (NOT LIBCLANG_CXXFLAGS)
if (NOT LIBCLANG_LLVM_CONFIG_EXECUTABLE)
message(FATAL_ERROR "Could NOT find llvm-config executable and LIBCLANG_CXXFLAGS is not set ")
endif ()
execute_process(COMMAND ${LIBCLANG_LLVM_CONFIG_EXECUTABLE} --cxxflags OUTPUT_VARIABLE LIBCLANG_CXXFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
if (NOT LIBCLANG_CXXFLAGS)
find_path(LIBCLANG_CXXFLAGS_HACK_CMAKECACHE_DOT_TEXT_BULLSHIT clang-c/Index.h HINTS ${LIBCLANG_ROOT_DIR}/include NO_DEFAULT_PATH)
if (NOT EXISTS ${LIBCLANG_CXXFLAGS_HACK_CMAKECACHE_DOT_TEXT_BULLSHIT})
find_path(LIBCLANG_CXXFLAGS clang-c/Index.h)
if (NOT EXISTS ${LIBCLANG_CXXFLAGS})
message(FATAL_ERROR "Could NOT find clang include path. You can fix this by setting LIBCLANG_CXXFLAGS in your shell or as a cmake variable.")
endif ()
else ()
set(LIBCLANG_CXXFLAGS ${LIBCLANG_CXXFLAGS_HACK_CMAKECACHE_DOT_TEXT_BULLSHIT})
endif ()
set(LIBCLANG_CXXFLAGS "-I${LIBCLANG_CXXFLAGS}")
endif ()
string(REGEX MATCHALL "-(D__?[a-zA-Z_]*|I([^\" ]+|\"[^\"]+\"))" LIBCLANG_CXXFLAGS "${LIBCLANG_CXXFLAGS}")
string(REGEX REPLACE ";" " " LIBCLANG_CXXFLAGS "${LIBCLANG_CXXFLAGS}")
set(LIBCLANG_CXXFLAGS ${LIBCLANG_CXXFLAGS} CACHE STRING "The LLVM C++ compiler flags needed to compile LLVM based applications.")
unset(LIBCLANG_CXXFLAGS_HACK_CMAKECACHE_DOT_TEXT_BULLSHIT CACHE)
endif ()
if (NOT EXISTS ${LIBCLANG_LIBDIR})
if (NOT LIBCLANG_LLVM_CONFIG_EXECUTABLE)
message(FATAL_ERROR "Could NOT find llvm-config executable and LIBCLANG_LIBDIR is not set ")
endif ()
execute_process(COMMAND ${LIBCLANG_LLVM_CONFIG_EXECUTABLE} --libdir OUTPUT_VARIABLE LIBCLANG_LIBDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
if (NOT EXISTS ${LIBCLANG_LIBDIR})
message(FATAL_ERROR "Could NOT find clang libdir. You can fix this by setting LIBCLANG_LIBDIR in your shell or as a cmake variable.")
endif ()
set(LIBCLANG_LIBDIR ${LIBCLANG_LIBDIR} CACHE STRING "Path to the clang library.")
endif ()
if (NOT LIBCLANG_LIBRARIES)
find_library(LIBCLANG_LIB_HACK_CMAKECACHE_DOT_TEXT_BULLSHIT NAMES clang libclang HINTS ${LIBCLANG_LIBDIR} ${LIBCLANG_ROOT_DIR}/lib NO_DEFAULT_PATH)
if (LIBCLANG_LIB_HACK_CMAKECACHE_DOT_TEXT_BULLSHIT)
set(LIBCLANG_LIBRARIES "${LIBCLANG_LIB_HACK_CMAKECACHE_DOT_TEXT_BULLSHIT}")
else ()
find_library(LIBCLANG_LIBRARIES NAMES clang libclang)
if (NOT EXISTS ${LIBCLANG_LIBRARIES})
set (LIBCLANG_LIBRARIES "-L${LIBCLANG_LIBDIR}" "-lclang" "-Wl,-rpath,${LIBCLANG_LIBDIR}")
endif ()
endif ()
unset(LIBCLANG_LIB_HACK_CMAKECACHE_DOT_TEXT_BULLSHIT CACHE)
endif ()
set(LIBCLANG_LIBRARY ${LIBCLANG_LIBRARIES} CACHE FILEPATH "Path to the libclang library")
if (NOT LIBCLANG_SYSTEM_LIBS)
execute_process(COMMAND ${LIBCLANG_LLVM_CONFIG_EXECUTABLE} --system-libs OUTPUT_VARIABLE LIBCLANG_SYSTEM_LIBS OUTPUT_STRIP_TRAILING_WHITESPACE)
if (LIBCLANG_SYSTEM_LIBS)
set (LIBCLANG_LIBRARIES ${LIBCLANG_LIBRARIES} ${LIBCLANG_SYSTEM_LIBS})
endif ()
endif ()
if (LIBCLANG_LLVM_CONFIG_EXECUTABLE)
execute_process(COMMAND ${LIBCLANG_LLVM_CONFIG_EXECUTABLE} --version OUTPUT_VARIABLE LIBCLANG_VERSION_STRING OUTPUT_STRIP_TRAILING_WHITESPACE)
else ()
set(LIBCLANG_VERSION_STRING "Unknown")
endif ()
message("-- Using Clang version ${LIBCLANG_VERSION_STRING} from ${LIBCLANG_LIBDIR} with CXXFLAGS ${LIBCLANG_CXXFLAGS}")
# Handly the QUIETLY and REQUIRED arguments and set LIBCLANG_FOUND to TRUE if all listed variables are TRUE
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibClang DEFAULT_MSG LIBCLANG_LIBRARY LIBCLANG_CXXFLAGS LIBCLANG_LIBDIR)
mark_as_advanced(LIBCLANG_CXXFLAGS LIBCLANG_LIBRARY LIBCLANG_LLVM_CONFIG_EXECUTABLE LIBCLANG_LIBDIR)

27
cmake/GitVersion.cmake Normal file
View File

@@ -0,0 +1,27 @@
find_package(Git)
function(setup_git_version)
if(NOT DEFINED GIT_VERSION)
if(GIT_EXECUTABLE)
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --tags --always --abbrev=7
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_VERSION
RESULT_VARIABLE GIT_ERROR_CODE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif(GIT_EXECUTABLE)
endif(NOT DEFINED GIT_VERSION)
if(NOT DEFINED GIT_VERSION)
set(GIT_VERSION "0.0.0-unknown")
endif(NOT DEFINED GIT_VERSION)
string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.(.+)"
GIT_VERSION_MATCH ${GIT_VERSION})
set(GIT_VERSION_MAJOR ${CMAKE_MATCH_1} PARENT_SCOPE)
set(GIT_VERSION_MINOR ${CMAKE_MATCH_2} PARENT_SCOPE)
set(GIT_VERSION_PATCH ${CMAKE_MATCH_3} PARENT_SCOPE)
set(GIT_VERSION ${GIT_VERSION} PARENT_SCOPE)
endfunction()

40
docs/Makefile Normal file
View File

@@ -0,0 +1,40 @@
# docs/Makefile
#
# Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
UPDATE_TOC := markdown-toc --bullets "*" -i
.PHONY: toc
toc:
$(UPDATE_TOC) architecture.md
$(UPDATE_TOC) class_diagrams.md
$(UPDATE_TOC) comment_decorators.md
$(UPDATE_TOC) common_options.md
$(UPDATE_TOC) generator_types.md
$(UPDATE_TOC) configuration_file.md
$(UPDATE_TOC) diagram_filters.md
$(UPDATE_TOC) doxygen_integration.md
$(UPDATE_TOC) include_diagrams.md
$(UPDATE_TOC) installation.md
$(UPDATE_TOC) interactive_svg_diagrams.md
$(UPDATE_TOC) diagram_templates.md
$(UPDATE_TOC) jinja_templates.md
$(UPDATE_TOC) package_diagrams.md
$(UPDATE_TOC) quick_start.md
$(UPDATE_TOC) sequence_diagrams.md
$(UPDATE_TOC) test_cases.md
$(UPDATE_TOC) troubleshooting.md

46
docs/README.md Normal file
View File

@@ -0,0 +1,46 @@
@mainpage clang-uml
# Documentation
`clang-uml` is an automatic C++ to UML class, sequence, package and include diagram generator, driven by
YAML configuration files. The main idea behind the
project is to easily maintain up-to-date diagrams within a code-base or document
legacy code. The configuration file or files for `clang-uml` define the
types and contents of each generated diagram.
The diagrams can be generated in [PlantUML](https://plantuml.com),
[MermaidJS](https://mermaid.js.org/) and JSON formats.
Example sequence diagram generated using `clang-uml` from [this code](https://github.com/bkryza/clang-uml/blob/master/tests/t20029/t20029.cc):
![Sample sequence diagram](test_cases/t20029_sequence.svg)
`clang-uml` currently supports C++ up to version 17 with partial support for C++ 20.
To see what `clang-uml` can do, checkout the diagrams generated for unit
test cases [here](./test_cases.md) or examples in
[clang-uml-examples](https://github.com/bkryza/clang-uml-examples) repository.
These pages provide both user and developer documentation.
* [Quick start](./quick_start.md)
* [Installation](./installation.md)
* **Generating diagrams**
* [Common options](./common_options.md)
* [Generator types](./generator_types.md)
* [Class diagrams](./class_diagrams.md)
* [Sequence diagrams](./sequence_diagrams.md)
* [Package diagrams](./package_diagrams.md)
* [Include diagrams](./include_diagrams.md)
* [Diagram templates](./diagram_templates.md)
* [Comment decorators](./comment_decorators.md)
* [Diagram filters](./diagram_filters.md)
* [Using Jinja templates in diagram configs](./jinja_templates.md)
* [Interactive SVG diagrams using links](./interactive_svg_diagrams.md)
* [Configuration file reference](./configuration_file.md)
* [Doxygen integration](./doxygen_integration.md)
* [Test cases documentation](./test_cases.md)
* [Troubleshooting](./troubleshooting.md)
* [Changelog](./changelog.md)
* [License](./license.md)
* **Development**
* [Architecture](./architecture.md)
* [Contributing](./contributing.md)

202
docs/architecture.md Normal file
View File

@@ -0,0 +1,202 @@
# Architecture
<!-- toc -->
* [Overview](#overview)
* [Configuration model](#configuration-model)
* [Diagram model](#diagram-model)
* [Common model](#common-model)
* [Diagram filters](#diagram-filters)
* [Translation unit visitors](#translation-unit-visitors)
* [Diagram generators](#diagram-generators)
* [Command line handler](#command-line-handler)
* [Tests](#tests)
* [Unit tests](#unit-tests)
* [Test cases](#test-cases)
* [Real code tests](#real-code-tests)
<!-- tocstop -->
This section presents general architecture and components of `clang-uml`.
> All diagrams below are generated by `clang-uml` and updated automatically.
## Overview
`clang-uml` is written in C++17 and
uses [Clang LibTooling API](https://releases.llvm.org/16.0.0/tools/clang/docs/LibTooling.html)
to traverse
the AST (Abstract Syntax Tree) of the source code and extract any information
relevant for a specified diagram.
The code is divided into several packages (namespaces), the main of them are:
- [`clanguml::config`](./namespaceclanguml_1_1config.html) - configuration
handling
- [`clanguml::common`](./namespaceclanguml_1_1common.html) - common interfaces
- [`clanguml::class_diagram`](./namespaceclanguml_1_1class__diagram.html) -
specializations for class diagrams
- [`clanguml::sequence_diagram`](./namespaceclanguml_1_1sequence__diagram.html) -
specializations for sequence diagrams
- [`clanguml::include_diagram`](./namespaceclanguml_1_1include__diagram.html) -
specializations for include diagrams
- [`clanguml::package_diagram`](./namespaceclanguml_1_1package__diagram.html) -
specializations for package diagrams
![clang-uml packages](./architecture_package.svg)
## Configuration model
The configuration model consists of classes representing the configuration
specified in the YAML configuration files.
Depending on the option, it can either:
- be specified only at the top level of the configuration file
- only in the specific diagram configuration
- either of the above
The first group of options are stored in
the [`config::config`](structclanguml_1_1config_1_1config.html) class.
The second group is stored in a specific diagram config subclass, e.g.
[`config::sequence_diagram`](structclanguml_1_1config_1_1sequence__diagram.html)
The options in the last group are modeled in the
[`config::inheritable_diagram_options`](./structclanguml_1_1config_1_1inheritable__diagram__options.html).
![configuration model](./config_class.svg)
The YAML configuration file is parsed
using [yaml-cpp](https://github.com/jbeder/yaml-cpp) library:
![configuration load sequence](./load_config_sequence.svg)
For each possible option type, there must an implementation of a
YAML decoder - e.g.
[`YAML::convert<filter>`](./structYAML_1_1convert_3_01filter_01_4.html)
(for converting YAML nodes to configuration model classes)
and a YAML emitter - e.g.
[`operator<<`](./group__yaml__emitters.html#ga4c8bc075684b08daa379aef609bb6297)
(for generating YAML from configuration model classes).
## Diagram model
The diagram model namespace is divided into the [`common`](#common-model) model
namespace and 1 namespace for each supported diagram type.
### Common model
The [common diagram model namespace](./namespaceclanguml_1_1common_1_1model.html),
provides a set of classes representing typical UML and C++ concepts such as
diagram elements, packages, templates, and others which are shared by more than
1 diagram type.
![clang-uml packages](./common_model_class.svg)
The diagram elements are composed into a hierarchy spanning all major
namespaces,
depending on whether the element is specific for a single diagram type (
e.g. [`participant`](./structclanguml_1_1sequence__diagram_1_1model_1_1participant.html)),
or whether it's common for several diagram types (
e.g. [`package`](./classclanguml_1_1common_1_1model_1_1package.html)).
### Diagram filters
In order to ease the generation of diagrams, `clang-uml` has a (very) simple
intermediate UML model, which covers only the features necessary for
generation of the supported diagram types. The model can be extended if
necessary to add new features.
![diagram filter context](./diagram_filter_context_class.svg)
## Translation unit visitors
The first stage in the diagram generation involves traversing the AST of
each translation unit from the `compile_commands.json` compilation database,
which matched at least one pattern specified in the `glob` pattern of the
configuration file.
Each visitor is implemented in a subclass of
[`translation_unit_visitor`](./classclanguml_1_1common_1_1visitor_1_1translation__unit__visitor.html),
and must also implement relevant methods from Clang's
[RecursiveASTVisitor](https://clang.llvm.org/doxygen/classclang_1_1RecursiveASTVisitor.html).
![AST visitors](./architecture_visitors_class.svg)
The output of the `translation_unit_visitor` for each diagram type is an
intermediate diagram model, which is then passed to the relevant diagram
generator.
## Diagram generators
Diagram generators convert the `clang-uml`'s internal UML model into actual
diagram in one of the supported formats:
- PlantUML
- MermaidJS
- JSON
Each diagram generator extends a common interface appropriate for the
selected output format, i.e.:
- [PlantUML](classclanguml_1_1common_1_1generators_1_1plantuml_1_1generator.html)
- [MermaidJS](classclanguml_1_1common_1_1generators_1_1mermaid_1_1generator.html)
- [JSON](classclanguml_1_1common_1_1generators_1_1json_1_1generator.html)
and renders the output to a file. For each diagram type there is a separate
generator for each supported output format.
## Command line handler
The [cli_handler](classclanguml_1_1cli_1_1cli__handler.html) is a command line
handler class is a wrapper around [CLI11](https://github.com/CLIUtils/CLI11),
and implements handlers for various actions, validates command line parameters
and reports errors.
## Tests
### Unit tests
Basic set of units tests are stored in
[tests/test_*.cc](https://github.com/bkryza/clang-uml/tree/master/tests)
test files. The unit tests do not aim to cover the entire codebase, only
specific algorithms or methods, which should behave as expected and if their
errors can be difficult to diagnose when running the test cases on C++ code.
### Test cases
These tests are the main tests of `clang-uml`. Each test case tests one or
more feature of a specific diagram type. Each of them has a separated directory
in the `tests` directory and its own `.clang-uml` with diagram configuration
as well as a `test_case.h` file which contains the tests assertions.
Any other sources in that directory are compiled and then used to generate the
diagrams, whose contents should be then verified within `test_case.h`
for correctness. All the sources should be wrapped within a namespace:
`clanguml::`
These test directories are numbered in consecutive numbers using the following
convention:
- Start with a letter `t`
- The first digit of the number is the diagram type:
- `0` - class diagram
- `2` - sequence diagram
- `3` - package diagram
- `4` - include diagram
- `9` - other test cases
- The rest of the name is the consecutive number of the test case
Each test case is also referenced in
[test_cases.yaml](https://github.com/bkryza/clang-uml/blob/master/tests/test_cases.yaml)
where it has assigned a title. That file is used to generate the [test cases
documentation page](./md_docs_2test__cases.html).
### Real code tests
Each release is tested on a set of open-source C++ projects, to be sure that
at least the new version does not crash or introduce some obvious regressions.
The tests are stored in a separate
repository: [clang-uml-examples](https://github.com/bkryza/clang-uml-examples).

213
docs/class_diagrams.md Normal file
View File

@@ -0,0 +1,213 @@
# Generating class diagrams
<!-- toc -->
* [Classes and their properties](#classes-and-their-properties)
* [Excluding private or protected members from the diagram](#excluding-private-or-protected-members-from-the-diagram)
* [Relationships](#relationships)
* [Relationships to classes in containers or smart pointers](#relationships-to-classes-in-containers-or-smart-pointers)
* [Inheritance diagrams](#inheritance-diagrams)
* [Including packages in the diagram](#including-packages-in-the-diagram)
* [Class context diagram](#class-context-diagram)
* [Disabling dependency relationships](#disabling-dependency-relationships)
<!-- tocstop -->
The minimal config required to generate a class diagram is presented below:
```yaml
# Path to the directory where `compile_commands.json` can be found
compilation_database_dir: _build
# Output directory for the diagrams
output_directory: diagrams
# Diagrams definitions
diagrams:
# Diagram name
t00002_class:
# Type of diagram (has to be `class`)
type: class
# Include only translation units matching the following patterns
glob:
- src/*.cc
# Render all names in the diagram relative to specific namespace
using_namespace: ns1
# Include only classes from specific namespace
include:
namespaces:
- ns1::ns2
```
## Classes and their properties
The basic class diagram generated by `clang-uml` and rendered using PlantUML
looks like this:
![extension](test_cases/t00003_class.svg)
Member types and method return types are rendered at the end after `:` sign.
Static methods and members are underlined.
In case method argument lists are too long and not required for diagram
readability, they can be suppressed completely or abbreviated by setting
`generate_method_arguments` option to either `none`, `abbreviated` or `full`
(default).
### Excluding private or protected members from the diagram
In order to only include public members in the class diagrams, we can add the
following inclusion filters:
```yaml
include:
access:
- public
```
To render only classes without any properties an exclusion filter can be added:
```yaml
exclude:
access:
- public
- protected
- private
```
## Relationships
The following table presents the PlantUML arrows representing each relationship
in the class diagrams.
| UML | PlantUML |
| ---- | --- |
| Inheritance | ![extension](img/puml_inheritance.png) |
| Association | ![association](img/puml_association.png) |
| Dependency | ![dependency](img/puml_dependency.png) |
| Aggregation | ![aggregation](img/puml_aggregation.png) |
| Composition | ![composition](img/puml_composition.png) |
| Template specialization/instantiation | ![specialization](img/puml_instantiation.png) |
| Nesting (inner class/enum) | ![nesting](img/puml_nested.png) |
By default, a member from which a relationship has been added to the diagram
between 2 classes will also be rendered inside the class. This behaviour can be
however disabled by adding the following option to the diagram definition:
```yaml
include_relations_also_as_members: false
```
### Relationships to classes in containers or smart pointers
`clang-uml` will automatically detect class members as well as method arguments,
which reference or own values of types relevant for a given diagram but wrapped
in smart pointers or containers and still generate relationship between these
classes, for instance the following code:
```cpp
class A { };
class B { };
class C { };
class R {
public:
std::unique_ptr<A> a;
std::shared_ptr<B> b;
std::weak_ptr<C> c;
};
```
results in the following diagram:
![extension](test_cases/t00007_class.svg)
## Inheritance diagrams
A common type of class diagram is an inheritance diagram, where only subclasses
of a specific base class are included and only the inheritance relationships are
rendered. This can be easily achieved in `clang-uml` through inclusion filters:
```yaml
include:
subclasses:
- clanguml::t00039::A
relationships:
- inheritance
```
## Including packages in the diagram
By default, `clang-uml` will render all element names including a namespace
(relative to `using_namespace` property), e.g. `ns1::ns2::MyClass`.
In order to generate packages in the diagram for each namespace instead, the
following option must be set to `true`:
```yaml
generate_packages: true
```
which results in the following diagram:
![t00036_class](test_cases/t00036_class.svg)
In case the code base is structured based on subdirectory instead of namespaces,
packages can be generated based on the location of a given declaration in the
filesystem tree, by adding also the following option:
```yaml
package_type: directory
```
which results in the following diagram:
![t00065_class](test_cases/t00065_class.svg)
> In this case make sure that the root path of the configuration file is
> properly configured for your project, if necessary add `relative_to` option to
> denote the root path against which all relative paths in the config file are
> calculated.
## Class context diagram
Sometimes it's helpful to generate a class diagram depicting only direct
relationships of a given class, e.g. within the classes' documentation page,
this can be easily achieved using `context` inclusion filter:
```yaml
include:
context:
- ns1::MyClass
```
## Disabling dependency relationships
Dependency relationships are inferred whenever a class uses another class, thus
often dependency relationship will be rendered in addition to other
relationships such as association or inheritance. By default, `clang-uml` will
remove these redundant dependency relationships, however if it is necessary to
retain them it can be done using the following option:
```yaml
skip_redundant_dependencies: false
```
In many cases, dependency relationships between classes can clutter the diagram
too much. In such cases it might be useful to disable dependency relationships
completely for this diagram completely using the following exclusion filter:
```yaml
exclude:
relationships:
- dependency
```
It is also possible to only disable dependency relationships generated from
template arguments to other templates. By default, the following code:
```cpp
class A {};
class B {
std::vector<A> a;
};
```
will generate a dependency from `B` to `A` in addition to aggregation
relationship. This can be disabled by specifying the following option:
```yaml
generate_template_argument_dependencies: false
```

231
docs/comment_decorators.md Normal file
View File

@@ -0,0 +1,231 @@
# Comment decorators
<!-- toc -->
* ['note'](#note)
* ['skip' and 'skiprelationship'](#skip-and-skiprelationship)
* ['composition', 'association' and 'aggregation'](#composition-association-and-aggregation)
* ['style'](#style)
<!-- tocstop -->
`clang-uml` provides a set of in-comment directives, called decorators, which allow custom control over
generation of UML diagrams from C++ and overriding default inference rules for relationships.
`clang-uml` decorators are specified in the following format:
```
\uml{<decorator>[:<diagram_name>][<options>] <text>}
```
or
```
@uml{<decorator>[:<diagram_name>][<options>] <text>}
```
The optional `:<diagram_name>` suffix will apply this decorator only to a specific diagram.
Currently, the following decorators are supported.
## 'note'
This decorator allows to specify directly in the code comments that should be included in the generated diagrams.
The following code:
```cpp
/// \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 <typename T> 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)
{
}
A aaa;
B *bbb;
C &ccc;
std::vector<std::shared_ptr<D>> ddd;
E<int> eee;
G **ggg;
};
```
results in the following class diagram:
![note](./test_cases/t00028_class.svg)
## 'skip' and 'skiprelationship'
This decorator allows to skip the specific classes or methods from the diagrams, for instance the following code:
```cpp
class A {
};
/// \uml{skip}
class B {
};
template <typename T> class C {
T param;
};
/// @uml{skip:t00029_class}
template <typename T> class D {
T param;
};
enum class E { one, two, three };
/// \uml{skip}
enum class F { red, green, blue };
class G1 {
};
class G2 {
};
class G3 {
};
class G4 {
};
struct R {
G1 g1;
/// \uml{skip}
G2 g2;
/// \uml{skiprelationship}
G3 &g3;
std::shared_ptr<G4> g4;
};
```
results in the following diagram:
![skip](./test_cases/t00029_class.svg)
## 'composition', 'association' and 'aggregation'
These decorators allow to specify explicitly the type of relationship within a class diagram that should be
generated for a given class member. For instance the following code:
```cpp
class A {
};
class B {
};
class C {
};
class D {
};
class E {
};
struct R {
/// @uml{association[]}
A aaa;
/// @uml{composition[0..1:1..*]}
std::vector<B> bbb;
/// @uml{aggregation[0..1:1..5]}
std::vector<C> ccc;
/// @uml{association[:1]}
D ddd;
/// @uml{aggregation[:1]}
E *eee;
};
```
results in the following diagram:
![skip](./test_cases/t00030_class.svg)
## 'style'
This decorator allows to specify in the code specific styles for diagram elements, for instance:
```cpp
/// @uml{style[#back:lightgreen|yellow;header:blue/red]}
class A {
};
/// @uml{style[#line.dotted:blue]}
enum B { one, two, three };
/// @uml{style[#pink;line:red;line.bold;text:red]}
template <typename T> class C {
T ttt;
};
class D {
};
struct R {
/// @uml{style[#red,dashed,thickness=2]}
A *aaa;
/// @uml{composition}
/// @uml{style[#green,dashed,thickness=4]}
std::vector<B> bbb;
/// @uml{style[#blue,dotted,thickness=8]}
C<int> ccc;
/// @uml{style[#blue,plain,thickness=16]}
D *ddd;
};
```
results in the following diagram:
![skip](./test_cases/t00031_class.svg)

218
docs/common_options.md Normal file
View File

@@ -0,0 +1,218 @@
# Common diagram generation options
<!-- toc -->
* [Overall configuration file structure](#overall-configuration-file-structure)
* [Diagram titles](#diagram-titles)
* [Translation unit glob patterns](#translation-unit-glob-patterns)
* [Custom directives](#custom-directives)
* [Adding debug information in the generated diagrams](#adding-debug-information-in-the-generated-diagrams)
* [Resolving include path and compiler flags issues](#resolving-include-path-and-compiler-flags-issues)
* [Use '--query-driver' command line option](#use---query-driver-command-line-option)
* [Manually add and remove compile flags from the compilation database](#manually-add-and-remove-compile-flags-from-the-compilation-database)
* [Using 'CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES'](#using-cmake_cxx_implicit_include_directories)
<!-- tocstop -->
## Overall configuration file structure
By default, `clang-uml` will look for file `.clang-uml` in the projects directory and read all diagrams definitions
from it. The file must be specified in YAML and it's overall structure is as follows:
```yaml
# common options for all diagrams
...
diagrams:
first_diagram_name:
type: class|sequence|package|include
# diagram specific options
...
second_diagram_name:
type: class|sequence|package|include
# diagram specific options
...
...
```
The top level common options are inherited by specific diagrams, if the option is applicable to them and they themselves
do not override this option.
For detailed reference of all configuration options see [here](./configuration_file.md).
Effective configuration, including default values can be printed out in YAML format using the following option:
```bash
clang-uml --dump-config
```
## Diagram titles
Each type of diagram can have a `title` property, which will be generated in the
diagram using directives specific to a given diagram generator, for instance:
```yaml
diagrams:
diagram1:
type: class
title: Some explanatory diagram title
```
## Translation unit glob patterns
One of the key options of the diagram configuration is the list of translation units, which should be parsed to
get all necessary information for a diagram.
The syntax is simple and based on glob patterns, which can be added to the configuration file as follows:
```yaml
glob:
- src/dir1/*.cc
- src/dir3/*.cc
```
The glob patterns only need to match the translation units, which are also in the `compile_commands.json` file, i.e.
any files that match the glob patterns but are not in `compile_commands.json` will be ignored. In case the `glob`
pattern set does not match any translation units an error will be printed on the standard output.
For small projects, the `glob` property can be omitted, which will result in `clang-uml` parsing all translation units
from `compile_commands.json` for the diagram. However for large projects, constraining the number of translation units
for each diagram to absolute minimum will significantly decrease the diagram generation times.
## Custom directives
In case it's necessary to add some custom PlantUML or MermaidJS declarations
before or after the generated diagram content, it can be achieved simply using
the `plantuml` or `mermaid` configuration properties, for instance for PlantUML:
```yaml
plantuml:
before:
- left to right direction
after:
- note left of {{ alias("ns1::ns2::MyClass") }} This is my class.
```
or for MermaidJS:
```yaml
mermaid:
before:
- direction LR
after:
- note for {{ alias("ns1::ns2::MyClass") }} "This is my class."
```
These directive are useful for instance for adding notes to elements in the
diagrams or customizing diagram layout or style.
Please note that when referring to diagram elements in the PlantUML directives,
they must be added using Jinja templates `alias` command as in the example above.
More options can be found in the official docs for each respective generator:
* [PlantUML](https://plantuml.com/)
* [MermaidJS](https://mermaid.js.org/intro/)
## Adding debug information in the generated diagrams
Sometimes it is useful for debugging issues with the diagrams to have information
on the exact source location, from which given declaration or call expression was
derived. By adding option:
```yaml
debug_mode: true
```
the generated PlantUML diagram will contain comments before each line containing
the source location of the
specific diagram element.
## Resolving include path and compiler flags issues
Due to the fact, that your project can be compiled with different compilers
and toolchains, the system paths and compilation flags detected by the Clang
version linked to your `clang-uml` installation might differ from the ones
actually used to compile your project.
> This is often an issue on macOS, when `clang-uml` uses Homebrew version of LLVM
> and your project was built using system Apple Clang
Typically, this results in error messages on the console during diagram
generation, such as:
```
... fatal: 'stddef.h' file not found
```
or
```
... warning: implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648 [-Wimplicit-const-int-float-conversion]
```
These errors can be overcome, by ensuring that the Clang parser has the correct
include paths to analyse your code base on the given platform. `clang-uml`
provides several mechanisms to resolve this issue:
### Use '--query-driver' command line option
> This option is not available on Windows.
Providing this option on the `clang-uml` command line will result in `clang-uml`
executing the specified compiler with the following command, e.g.:
```bash
/usr/bin/c++ -E -v -x c /dev/null 2>&1
```
and extracting from the output the target and system include paths, which are
then injected to each entry of the compilation database. For instance, on my
system, when generating diagrams for an embedded project and providing
`arm-none-eabi-gcc` as driver:
```bash
clang-uml --query-driver arm-none-eabi-gcc
```
the following options are appended to each command line after `argv[0]` of the
command:
```bash
--target=arm-none-eabi -isystem /usr/lib/gcc/arm-none-eabi/10.3.1/include -isystem /usr/lib/gcc/arm-none-eabi/10.3.1/include-fixed -isystem /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/include
```
If you want to include the system headers reported by the compiler specified
already as `argv[0]` in your `compile_commands.json`, you can simply invoke
`clang-uml` as:
```bash
clang-uml --query-driver .
```
however please make sure that the `compile_commands.json` contains a command,
which is safe to execute.
### Manually add and remove compile flags from the compilation database
If the system paths extracted from the compiler are not sufficient to resolve
include paths issues, it is possible to manually adjust the compilation
flags by providing `add_compile_flags` and `remove_compile_flags` in the
configuration file, or providing `--add-compile-flag` and `--remove-compile-flag`
on the `clang-uml` command line.
For instance:
```yaml
add_compile_flags:
- -I/opt/my_toolchain/include
remove_compile_flags:
- -I/usr/include
```
These options can be also passed on the command line, for instance:
```bash
clang-uml --add-compile-flag -I/opt/my_toolchain/include \
--remove-compile-flag -I/usr/include ...
```
### Using 'CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES'
Yet another option, for CMake based projects, is to use the following CMake option:
```cmake
set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES})
```

View File

@@ -1,10 +1,24 @@
# Configuration file reference
<!-- toc -->
* [Top level options](#top-level-options)
* [Diagram options](#diagram-options)
* [Example complete config](#example-complete-config)
* [Determining config file location](#determining-config-file-location)
* [Paths](#paths)
<!-- tocstop -->
## Top level options
* `compilation_database_dir` - path to the directory containing `compile_commands.json`
* `output_directory` - path to the directory where PlantUML diagrams will be generated
* `diagrams` - the map of diagrams to be generated, each diagram name is provided as
the key of the diagram YAML node
* `debug_mode` - add inline debug information in the generated diagrams
* `add_compile_flags` - add compile flags to all compilation database entries
* `remove_compile_flags` - remove compile flags from all compilation database entries
* `query_driver` - name or path to compiler driver, which should be queried for system include paths (e.g. arm-none-eabi-g++)
### Diagram options
* `type` - type of diagram, one of [`class`, `sequence`, `package`, `include`]
@@ -12,20 +26,24 @@
* `include_relations_also_as_members` - when set to `false`, class members for relationships are rendered in UML are skipped from class definition (default: `true`)
* `generate_method_arguments` - determines whether the class diagrams methods contain full arguments (`full`), are abbreviated (`abbreviated`) or skipped (`none`)
* `using_namespace` - similar to C++ `using namespace`, a `A::B` value here will render a class `A::B::C::MyClass` in the diagram as `C::MyClass`, at most 1 value is supported
* `generate_packages` - whether or not the class diagram should contain packages generated from namespaces or subdirectories
* `package_type` - determines how the packages are inferred: `namespace` - use C++ namespaces, `directory` - use project's directory structure
* `include` - definition of inclusion patterns:
* `namespaces` - list of namespaces to include
* `relationships` - list of relationships to include
* `elements` - list of elements, i.e. specific classes, enums, templates to include
* `element_types` - list of element types e.g. `enum`, `class`, `concept`
* `access` - list of visibility scopes to include (e.g. `private`)
* `subclasses` - include only subclasses of specified classes (and themselves)
* `specializations` - include all specializations or instantiations of a given template
* `dependants` - include all classes, which depend on the specified class
* `dependencies` - include all classes, which are dependencies of the specified class
* `context` - include only entities in direct relationship with specified classes
* `exclude` - definition of excqlusion patterns:
* `exclude` - definition of exclusion patterns:
* `namespaces` - list of namespaces to exclude
* `relationships` - list of relationships to exclude
* `elements` - list of elements, i.e. specific classes, enums, templates to exclude
* `element_types` - list of element types e.g. `enum`, `class`, `concept`
* `access` - list of visibility scopes to exclude (e.g. `private`)
* `subclasses` - exclude subclasses of specified classes (and themselves)
* `specializations` - exclude all specializations or instantiations of a given template
@@ -36,28 +54,24 @@
* `plantuml` - verbatim PlantUML directives which should be added to a diagram
* `before` - list of directives which will be added before the generated diagram
* `after` - list of directives which will be added after the generated diagram
### Template engine
`clang-uml` integrates [inja](https://github.com/pantor/inja) template engine, with several
additional functions which can be used in textual directives within the configuration files,
notes and to generate links and tooltips to diagrams.
The following, are the `clang-uml` additional template functions:
* `ltrim(string)` - left trims a string
* `rtrim(string)` - right trims a string
* `trim(string)` - trims a string
* `substr(string, offset, length)` - returns a substring of a string from offset of length
* `split(string)` - splits a string and returns a list of strings
* `replace(string, regex, replacement)` - returns a string with replace matches to regex with replacement string
* `abbrv(string, length)` - returns a string truncated to length including trailing ellipsis
* `alias(string)` - returns a PlantUML alias of an C++ entity represented by string name
* `mermaid` - verbatim MermaidJS directives which should be added to a diagram
* `before` - list of directives which will be added before the generated diagram
* `after` - list of directives which will be added after the generated diagram
*
## Example complete config
```yaml
# Directory containing the compile_commands.json file
compilation_database_dir: debug
# Inject additional compile commands to the compilation database entries
add_compile_flags:
- '-Wno-vla-extension'
# Remove specified compile flags from all compilation database entries
remove_compile_flags:
- '-Wshadow'
# Compiler driver command to query for system include paths
query_driver:
- arm-none-eabi-g++
# The directory where *.puml files will be generated
output_directory: docs/diagrams
# Set this as default for all diagrams
@@ -77,8 +91,10 @@ diagrams:
type: class
# Do not include rendered relations in the class box
include_relations_also_as_members: false
# Generate packages from the namespaces
generate_packages: true
package_type: namespace # or 'directory' to generate from projects subdirectories
# Limiting the number of files to include can significantly
# improve the generation time
glob:
- src/common/model/*.h
- src/common/model/*.cc
@@ -101,6 +117,11 @@ diagrams:
ClassA:
- up: ClassB
- left: ClassC
ClassD:
- together: [ClassE, ClassF, EnumG]
ClassX:
- row: [ClassY1, ClassZ1]
- column: [ClassY2, ClassZ2]
# Specify customized relationship hints for types which are
# arguments in template instantiations
relationship_hints:
@@ -120,4 +141,36 @@ diagrams:
# Add this line to the beginning of the resulting puml file
before:
- 'title clang-uml class diagram model'
```
mermaid:
# Add this line at the end of a Mermaid diagram
end:
- 'direction LR'
```
## Determining config file location
If `-c,--config` option is not provided, `clang-uml` will try to open file
`.clang-uml` in the current directory and fail if it doesn't exist.
With `-c,--config` option pointing to a valid `.clang-uml` file path, the file
configuration will be loaded from that file.
Furthermore, when the value of `-c,--config` option is `-` - the entire config
will be read from `stdin`, which can be useful for scripting and generating
config Yaml documents on the fly.
## Paths
By default, all paths specified in the configuration file, including:
* `glob`
* `output_directory`
* `compilation_database_dir`
* `paths` filter
are relative to the parent directory of the configuration file. This can be
changed in the following ways:
* by specifying `relative_to` option in the configuration file
* by providing `--paths-relative-to-pwd` command line option, in which
case all paths will be relative to the directory where `clang-uml` is
executed (this only makes sense for automation where `clang-uml` is executed
from the same location relative to the project directory

291
docs/diagram_filters.md Normal file
View File

@@ -0,0 +1,291 @@
# Diagram filters
<!-- toc -->
* [namespaces](#namespaces)
* [elements](#elements)
* [element_types](#element_types)
* [paths](#paths)
* [context](#context)
* [relationships](#relationships)
* [subclasses](#subclasses)
* [parents](#parents)
* [specializations](#specializations)
* [access](#access)
* [method_types](#method_types)
* [callee_types](#callee_types)
* [dependants and dependencies](#dependants-and-dependencies)
<!-- tocstop -->
Diagram filters are at the core of generating diagrams with `clang-uml`, as they allow to fine tune the scope
of each diagram, and thus provide you with a several small, but readable diagrams instead of a single huge diagram
that cannot be effectively browsed, printed or included in an online documentation of your project.
Filters can be specified separate for each diagram, and they can be added as either `include` or `exclude` filters,
depending on which is more appropriate for a given diagram.
For instance to include only C++ entities from a namespace `ns1::ns2` but not `ns1::ns2::detail` add the following
to your diagram configuration:
```yaml
include:
namespaces:
- ns1::ns2
exclude:
namespaces:
- ns1::ns2::detail
```
Some filters accept either specified exact values, some support regular
expressions while some except glob patterns.
For filters which accept regular expressions, the regular expression has to
be provided as a map `r: 'pattern'` due to the fact the pointer (`*`) otherwise
would have to be escaped in situations such as `mycontainer<char*>`, so for
instance to specify that the diagram should exclude all classes containing the
word `test` simply add the following filter:
```yaml
exclude:
elements:
- r: '.*test.*'
```
`paths` filter is currently the only filter which accepts `glob` like patterns.
The following table specifies the values allowed in each filter:
| Filter name | Possible values | Example values |
|-------------------|----------------------------------|------------------------------------------------------------------------------------------------------------------------|
| `namespaces` | Qualified name or regex | ```ns1::ns2::ClassA```, ```r: '.*detail.*'``` |
| `elements` | Qualified name or regex | ```ns1::ns2::ClassA```, ```r: '.*detail.*'``` |
| `element_types` | Types of diagram elements | ```class```, ```enum```, ```concept``` |
| `paths` | File or dir path or glob pattern | ```src/dir1```, ```src/dir2/a.cpp```, ```src/dir3/*.cpp``` |
| `context` | Qualified name or regex | ```ns1::ns2::ClassA```, ```r: 'ns1::ns2::ClassA.+'``` |
| `relationships` | Type of relationship | ```inheritance```, ```composition```, ```aggregation```, ```ownership```, ```association```, ```instantiation```, ```friendship```, ```dependency``` |
| `subclasses` | Qualified name or regex | ```ns1::ns2::ClassA```, ```r: 'ns1::ns2::ClassA.+'``` |
| `parents` | Qualified name or regex | ```ns1::ns2::ClassA```, ```r: 'ns1::ns2::ClassA.+'``` |
| `specializations` | Qualified name or regex | ```ns1::ns2::ClassA```, ```r: 'ns1::ns2::ClassA.+'``` |
| `access` | Method or member access scope | ```public```, ```protected```, ```private``` |
| `method_types` | Type of class method | ```constructor```, ```destructor```, ```assignment```, ```operator```, ```defaulted```, ```deleted```, ```static``` |
| `dependants` | Qualified name or regex | ```ns1::ns2::ClassA```, ```r: 'ns1::ns2::ClassA.+'``` |
| `dependencies` | Qualified name or regex | ```ns1::ns2::ClassA```, ```r: 'ns1::ns2::ClassA.+'``` |
| `callee_types` | Callee types in sequence diagrams| ```constructor```, ```assignment```, ```operator```, ```defaulted```, ```static```, ```method```, ```function```, ```function_template```, ```lambda``` |
The following filters are available.
## namespaces
Allows to include or exclude entities from specific namespaces.
## elements
Allows to directly include or exclude specific entities from the diagrams, for instance to exclude a specific class
from an included namespace:
```yaml
include:
namespaces:
- ns1::ns2
exclude:
elements:
- ns1::ns2::MyClass
```
## element_types
Allows to include or exclude elements of specific type from the diagram, for instance
to remove all enums from a diagram add the following:
```yaml
exclude:
element_types:
- enum
```
## paths
This filter allows to include or exclude from the diagram elements declared
in specific files.
```yaml
diagrams:
t00061_class:
type: class
relative_to: ../../tests/t00061
glob: [t00061.cc]
include:
paths: [include/t00061_a.h]
using_namespace:
- clanguml::t00061
```
Currently, this filter does not allow any globbing or wildcards, however
paths to directories can be specified.
## context
This filter allows to limit the diagram elements only to classes which are in direct relationship (of any kind) with
the specified class:
```yaml
include:
context:
- ns1::ns2::MyClass
```
## relationships
This filter allows to include or exclude specific types of relationships from the diagram, for instance to only
include inheritance and template specialization/instantiation relationships add the following to the diagram:
```yaml
include:
relationships:
- inheritance
- instantiation
```
The following relationships can be used in this filter:
* inheritance
* composition
* aggregation
* ownership
* association
* instantiation
* friendship
* dependency
## subclasses
This filter allows to include or exclude all subclasses of a given class in the diagram.
## parents
This filter allows to include or exclude all parents (base classes) of a given class in the diagram.
## specializations
This filter allows to include or exclude specializations and instantiations of a specific template from the diagram.
## access
This filter allows to include or exclude class methods and members based on their access scope, allowed values ar:
* `public`
* `protected`
* `private`
## method_types
This filter allows to include or exclude various method types from the class diagram, allowed values ar:
* constructor
* destructor
* assignment
* operator
* defaulted
* deleted
* static
This filter is independent of the `access` filter, which controls which methods
are included based on access scope (e.g. `public`).
## callee_types
This filter is specific for `sequence diagrams` and allows to control, which
types of callees should be included/excluded from the diagram. In a sequence diagram,
a `callee` is the receiver of a message, and this filter specifies which types
of receivers should match.
The following callee types are supported:
* constructor
* assignment
* operator
* defaulted
* static
* method
* function
* function_template
* lambda
## dependants and dependencies
These filters allow to specify that only dependants or dependencies of a given
class should be included in the diagram. This can be useful for analyzing what
classes in your project depend on some other class, which could have impact for
instance on refactoring.
For instance the following code:
```cpp
namespace dependants {
struct A {
};
struct B {
void b(A *a) { }
};
struct BB {
void bb(A *a) { }
};
struct C {
void c(B *b) { }
};
struct D {
void d(C *c) { }
void dd(BB *bb) { }
};
struct E {
void e(D *d) { }
};
struct F {
};
} // namespace dependants
namespace dependencies {
struct G {
};
struct GG {
};
struct H {
void h(G *g) { }
void hh(GG *gg) { }
};
struct HH {
void hh(G *g) { }
};
struct I {
void i(H *h) { }
};
struct J {
void i(I *i) { }
};
```
and the following filter:
```yaml
include:
dependants:
- clanguml::t00043::dependants::A
dependencies:
- clanguml::t00043::dependencies::J
relationships:
- dependency
```
results in the following diagram:
![t00043_class](./test_cases/t00043_class.svg)

97
docs/diagram_templates.md Normal file
View File

@@ -0,0 +1,97 @@
# Diagram templates
<!-- toc -->
* [Diagram template syntax](#diagram-template-syntax)
* [Adding templates to the configuration file](#adding-templates-to-the-configuration-file)
* [Adding diagram to configuration from a template](#adding-diagram-to-configuration-from-a-template)
* [Builtin templates](#builtin-templates)
<!-- tocstop -->
When working with large codebases, it is often necessary to create diagram
configurations for a large number of classes or groups of classes.
Diagram templates feature makes this easier, by allowing to define (or use
one of the builtin) templates and generate using them any number of diagram
configurations. Diagram templates can be defined using Jinja like template
syntax (current renderer implementation is
[inja](https://github.com/pantor/inja)).
## Diagram template syntax
Diagram templates are defined as part of the configuration file using the
following YAML node:
```yaml
diagram_templates:
# Name of the template
parents_hierarchy_tmpl:
# Description of the template
description: Generate class parents inheritance diagram
# Diagram type
type: class
# Template definition - it has to be valid YAML after it is rendered
template: |
{{ diagram_name }}:
type: class
{% if exists("glob") %}
glob: [{{ glob }}]
{% endif %}
{% if exists("using_namespace") %}
using_namespace: {{ using_namespace }}
{% endif %}
include:
parents: [{{ class_name }}]
namespaces: [{{ namespace_names }}]
relationships:
- inheritance
exclude:
access: [public, protected, private]
plantuml:
before:
- left to right direction
```
## Adding templates to the configuration file
Diagram templates can be added directly to the `.clang-uml` configuration file,
under a `diagram_templates:` key. However, for practical reasons it is better
to keep diagram template definitions in a separate Yaml file, and reference
it in the configuration file using `include!` directive, e.g.:
```yaml
diagram_templates:
include!: .clang-uml-templates
```
## Adding diagram to configuration from a template
To add a new diagram definition to the configuration file based on the template,
simply call the `clang-uml` using the following options:
```bash
clang-uml --add-diagram-from-template parents_hierarchy_tmpl \
--template-var class_name=clanguml::config::include_diagram \
--template-var namespace_names=clanguml \
--template-var diagram_name=abcd \
--template-var "glob=src/config/*.cc" \
--template-var using_namespace=clanguml::config
```
To see what variables are necessary to provide for a template, the template
can be printed from the command line using the following command:
```bash
clang-uml --show-template parents_hierarchy_tmpl
```
## Builtin templates
`clang-uml` has some predefined templates, which can be used directly. If the
users configuration file defines another template with a name which already
exists as built-in template it will override the predefined templates.
Currently, the following templates are built-in:
* `parents_hierarchy_tmpl` - generate inheritance hierarchy diagram including
parents of a specified class
* `subclass_hierarchy_tmpl` - generate inheritance hierarchy diagram including
c children of a specified class
* `class_context_tmpl` - generate diagram including all classes in direct
relationship (of any kind) with a specific class

28
docs/doxygen/footer.html Normal file
View File

@@ -0,0 +1,28 @@
<!-- HTML footer for doxygen 1.9.1-->
<!-- start footer part -->
<!--BEGIN GENERATE_TREEVIEW-->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
$navpath
<li class="footer">
$generatedby
<a href="https://www.doxygen.org/index.html">
<img class="footer" src="$relpath^doxygen.svg" width="104" height="31" alt="doxygen"/>
</a> $doxygenversion
</li>
</ul>
</div>
<!--END GENERATE_TREEVIEW-->
<!--BEGIN !GENERATE_TREEVIEW-->
<hr class="footer"/><address class="footer">
<small>
<span class="copyright">&#160;&#160;Copyright &copy; 2022-present <a href="https://github.com/bkryza">Bartek Kryza</a>
</span>
$generatedby&#160;
<a href="https://www.doxygen.org/index.html">
<img class="footer" src="$relpath^doxygen.svg" width="104" height="31" alt="doxygen"/>
</a> $doxygenversion
</small></address>
<!--END !GENERATE_TREEVIEW-->
</body>
</html>

7
docs/doxygen/github.min.css vendored Normal file
View File

@@ -0,0 +1,7 @@
/*!
Theme: Github
Author: Defman21
License: ~ MIT (or more permissive) [via base16-schemes-source]
Maintainer: @highlightjs/core-team
Version: 2021.09.0
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#333;background:#fff}.hljs ::selection,.hljs::selection{background-color:#c8c8fa;color:#333}.hljs-comment{color:#969896}.hljs-tag{color:#e8e8e8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#333}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ed6a43}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#0086b3}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#795da3}.hljs-strong{font-weight:700;color:#795da3}.hljs-addition,.hljs-built_in,.hljs-code,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp,.hljs-string,.hljs-title.class_.inherited__{color:#183691}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#795da3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a71d5d}.hljs-emphasis{color:#a71d5d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#333}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}

111
docs/doxygen/header.html Normal file
View File

@@ -0,0 +1,111 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen $doxygenversion"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<!-- BEGIN opengraph metadata -->
<meta property="og:title" content="clang-uml" />
<meta property="og:image" content="$relpath^clang-uml-logo.svg" />
<meta property="og:description" content="C++ to UML diagram generator based on Clang." />
<meta property="og:url" content="https://clang-uml.github.io/" />
<!-- END opengraph metadata -->
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
<link rel="icon" type="image/svg+xml" href="logo.drawio.svg"/>
<script type="text/javascript" src="$relpath^jquery.js"></script>
<script type="text/javascript" src="$relpath^dynsections.js"></script>
<!--<script type="text/javascript" src="$relpath^doxygen-awesome-darkmode-toggle.js"></script>-->
<script type="text/javascript" src="$relpath^doxygen-awesome-fragment-copy-button.js"></script>
<script type="text/javascript" src="$relpath^doxygen-awesome-paragraph-link.js"></script>
<!--<script type="text/javascript" src="$relpath^doxygen-awesome-interactive-toc.js"></script>-->
<!--<script type="text/javascript" src="$relpath^doxygen-awesome-tabs.js"></script>-->
<!--<script type="text/javascript" src="$relpath^toggle-alternative-theme.js"></script>-->
<script type="text/javascript">
DoxygenAwesomeFragmentCopyButton.init()
// DoxygenAwesomeDarkModeToggle.init()
DoxygenAwesomeParagraphLink.init()
// DoxygenAwesomeInteractiveToc.init()
// DoxygenAwesomeTabs.init()
</script>
$treeview
$search
$mathjax
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="$relpath^github.min.css">
<script src="$relpath^highlight.min.js"></script>
<script>
$(function() {
hljs.configure({useBR: false});
$(".fragment").each(function(i,node) {
var $node = $(node);
// Only apply highlight.js to non-cpp code blocks
if (!$node.hasClass("language-cpp")) {
$node.html("<pre><code class='" +
$node.attr("class") + "'>" +
$node.text() + "</code></pre>");
hljs.highlightElement(node);
}
});
});
</script>
$extrastylesheet
</head>
<body>
<!-- https://tholman.com/github-corners/ -->
<!--<a href="https://github.com/bkryza/clang-uml" class="github-corner" title="View source on GitHub" target="_blank">-->
<!-- <svg viewBox="0 0 250 250" width="70" height="70" style="position: absolute; top: 0; border: 0; right: 0; z-index: 99;" aria-hidden="true">-->
<!-- <path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>-->
<div id="top" style="background-color: gainsboro"><!-- do not remove this div, it is closed by doxygen! -->
<!--BEGIN TITLEAREA-->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<!--BEGIN PROJECT_LOGO-->
<td id="projectlogo">
<a href="$relpath^index.html">
<img alt="Main page" src="$relpath^$projectlogo"/>
</a>
</td>
<!--END PROJECT_LOGO-->
<!--BEGIN PROJECT_NAME-->
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">
<span id="projectnumber">$projectnumber</span>
</div>
<div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
</td>
<!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME-->
<!--BEGIN PROJECT_BRIEF-->
<!-- <td style="padding-left: 0.5em;">-->
<!-- <div id="projectbrief">$projectbrief</div>-->
<!-- </td>-->
<td>
<div>
<a href="https://github.com/bkryza/clang-uml">
<img alt="GitHub" src="$relpath^github-mark.svg"/>
</a>
</div>
</td>
<!--END PROJECT_BRIEF-->
<!--END !PROJECT_NAME-->
<!--BEGIN DISABLE_INDEX-->
<!--BEGIN SEARCHENGINE-->
<td>$searchbox</td>
<!--END SEARCHENGINE-->
<!--END DISABLE_INDEX-->
</tr>
</tbody>
</table>
</div>
<!--END TITLEAREA-->
<!-- end header part -->

2575
docs/doxygen/highlight.js Normal file

File diff suppressed because it is too large Load Diff

611
docs/doxygen/highlight.min.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,234 @@
<doxygenlayout version="1.0">
<!-- Generated by doxygen 1.9.7 -->
<!-- Navigation index tabs for HTML output -->
<navindex>
<!-- <tab type="mainpage" visible="yes" title=""/>-->
<!-- <tab type="pages" visible="yes" title="" intro=""/>-->
<!-- <tab type="modules" visible="yes" title="" intro=""/>-->
<tab type="user" url="./md_docs_2installation.html" title="Installation"/>
<tab type="user" url="./md_docs_2test__cases.html" title="Test cases"/>
<tab type="user" visible="yes" url="./index.html" title="Doxygen">
<tab type="namespaces" visible="yes" title="">
<tab type="namespacelist" visible="yes" title="" intro=""/>
<tab type="namespacemembers" visible="yes" title="" intro=""/>
</tab>
<tab type="classes" visible="yes" title="">
<tab type="classlist" visible="yes" title="" intro=""/>
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="hierarchy" visible="yes" title="" intro=""/>
<tab type="classmembers" visible="yes" title="" intro=""/>
</tab>
<tab type="structs" visible="yes" title="">
<tab type="structlist" visible="yes" title="" intro=""/>
<tab type="structindex" visible="$ALPHABETICAL_INDEX" title=""/>
</tab>
<tab type="files" visible="yes" title="">
<tab type="filelist" visible="yes" title="" intro=""/>
<tab type="globals" visible="yes" title="" intro=""/>
</tab>
</tab>
<tab type="user" url="https://github.com/bkryza/clang-uml-examples" title="Examples"/>
<tab type="user" url="https://github.com/bkryza/clang-uml" title="GitHub"/>
</navindex>
<!-- Layout definition for a class page -->
<class>
<briefdescription visible="yes"/>
<detaileddescription title=""/>
<includes visible="$SHOW_HEADERFILE"/>
<inheritancegraph visible="$CLASS_GRAPH"/>
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
<memberdecl>
<nestedclasses visible="yes" title=""/>
<publictypes title=""/>
<services title=""/>
<interfaces title=""/>
<publicslots title=""/>
<signals title=""/>
<publicmethods title=""/>
<publicstaticmethods title=""/>
<publicattributes title=""/>
<publicstaticattributes title=""/>
<protectedtypes title=""/>
<protectedslots title=""/>
<protectedmethods title=""/>
<protectedstaticmethods title=""/>
<protectedattributes title=""/>
<protectedstaticattributes title=""/>
<packagetypes title=""/>
<packagemethods title=""/>
<packagestaticmethods title=""/>
<packageattributes title=""/>
<packagestaticattributes title=""/>
<properties title=""/>
<events title=""/>
<privatetypes title=""/>
<privateslots title=""/>
<privatemethods title=""/>
<privatestaticmethods title=""/>
<privateattributes title=""/>
<privatestaticattributes title=""/>
<friends title=""/>
<related title="" subtitle=""/>
<membergroups visible="yes"/>
</memberdecl>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<enums title=""/>
<services title=""/>
<interfaces title=""/>
<constructors title=""/>
<functions title=""/>
<related title=""/>
<variables title=""/>
<properties title=""/>
<events title=""/>
</memberdef>
<allmemberslink visible="yes"/>
<usedfiles visible="$SHOW_USED_FILES"/>
<authorsection visible="yes"/>
</class>
<!-- Layout definition for a namespace page -->
<namespace>
<briefdescription visible="yes"/>
<detaileddescription title=""/>
<memberdecl>
<nestednamespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<concepts visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection visible="yes"/>
</namespace>
<!-- Layout definition for a concept page -->
<concept>
<briefdescription visible="yes"/>
<detaileddescription title=""/>
<includes visible="$SHOW_HEADERFILE"/>
<definition visible="yes" title=""/>
<detaileddescription title=""/>
<authorsection visible="yes"/>
</concept>
<!-- Layout definition for a file page -->
<file>
<briefdescription visible="yes"/>
<!-- <detaileddescription title=""/>-->
<includes visible="$SHOW_INCLUDE_FILES"/>
<includegraph visible="$INCLUDE_GRAPH"/>
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
<sourcelink visible="yes"/>
<memberdecl>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<concepts visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<memberdef>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection/>
</file>
<!-- Layout definition for a group page -->
<group>
<briefdescription visible="yes"/>
<detaileddescription title=""/>
<groupgraph visible="$GROUP_GRAPHS"/>
<memberdecl>
<nestedgroups visible="yes" title=""/>
<dirs visible="yes" title=""/>
<files visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<concepts visible="yes" title=""/>
<classes visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
<membergroups visible="yes"/>
</memberdecl>
<memberdef>
<pagedocs/>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
</memberdef>
<authorsection visible="yes"/>
</group>
<!-- Layout definition for a directory page -->
<directory>
<briefdescription visible="yes"/>
<directorygraph visible="yes"/>
<memberdecl>
<dirs visible="yes"/>
<files visible="yes"/>
</memberdecl>
<!-- <detaileddescription title=""/>-->
</directory>
</doxygenlayout>

7
docs/doxygen/solarized-light.min.css vendored Normal file
View File

@@ -0,0 +1,7 @@
/*!
Theme: Solarized Light
Author: Ethan Schoonover (modified by aramisgithub)
License: ~ MIT (or more permissive) [via base16-schemes-source]
Maintainer: @highlightjs/core-team
Version: 2021.09.0
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#586e75;background:#fdf6e3}.hljs ::selection,.hljs::selection{background-color:#93a1a1;color:#586e75}.hljs-comment{color:#839496}.hljs-tag{color:#657b83}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#586e75}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dc322f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#cb4b16}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#b58900}.hljs-strong{font-weight:700;color:#b58900}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#859900}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2aa198}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#268bd2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6c71c4}.hljs-emphasis{color:#6c71c4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d33682}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}

View File

@@ -0,0 +1,62 @@
# Doxygen integration
<!-- toc -->
<!-- tocstop -->
`clang-uml` diagrams can be easily added to the Doxygen documentation using the
`image` tag, however [Doxygen](https://www.doxygen.nl/index.html) does not
support the `clang-uml` specific [commands](./comment_decorators.md), which
will appear in the documentation unprocessed.
The best solution to this is to tell Doxygen to ignore them, by adding the
following lines to the Doxygen config file:
```
ALIASES += uml=""
ALIASES += uml{1}=""
ALIASES += uml{2}=""
ALIASES += uml{3}=""
```
Furthermore, Doxygen adds images to HTML documentation as `<img src=""/>`,
which disables interactive links in SVG diagrams. One way to go around it
is to use a special command for these images, for instance:
```
ALIASES += embed{1}="\htmlonly <embed src=\"\1\"/> \endhtmlonly"
```
and then use the following in the source code comments:
```cpp
/**
* @brief Base class for all diagram models
*
* @embed{diagram_hierarchy_class.svg}
*/
class diagram {
public:
// ...
```
This directive in the configuration file will add the SVG diagrams using
`<embed>` HTML tag, and enable the links in the diagram on most browsers.
Finally, to have `clang-uml` generate links from diagram elements such as classes
or packages to Doxygen pages, it is only necessary to add the following
configuration file option:
```yaml
generate_links:
link: "{% if existsIn(element, \"doxygen_link\") %}{{ element.doxygen_link }}{% endif %}"
tooltip: "{% if existsIn(element, \"comment\") and existsIn(element.comment, \"brief\") %}{{ abbrv(trim(replace(element.comment.brief.0, \"\\n+\", \" \")), 256) }}{% else %}{{ element.name }}{% endif %}"
```
This option will tell `clang-uml` to generate a link to a local Doxygen
documentation page, provided that it is possible to generate it. Currently,
this only works for diagram elements, it will not work for instance
for individual methods.

912
docs/generator_types.md Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

1
docs/img/github-mark.svg Normal file
View File

@@ -0,0 +1 @@
<svg width="98" height="96" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z" fill="#24292f"/></svg>

After

Width:  |  Height:  |  Size: 963 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 772 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
docs/img/mermaid_nested.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 976 B

64
docs/include_diagrams.md Normal file
View File

@@ -0,0 +1,64 @@
# Generating include diagrams
<!-- toc -->
* [Tracking system headers directly included by project sources](#tracking-system-headers-directly-included-by-project-sources)
<!-- tocstop -->
Include diagrams allow to document the include dependencies among different parts of the project. This can be very useful
for instance to detect that a file was included from a module directory, on which specific part of the project
should not ever depend.
The minimal config required to generate an include diagram is presented below:
```yaml
# Path to the directory where `compile_commands.json` can be found
compilation_database_dir: _build
# Output directory for the diagrams
output_directory: diagrams
# Diagrams definitions
diagrams:
# Diagram name
my_class_diagram:
# Type of diagram (has to be `include`)
type: include
# Include only translation units matching the following patterns
glob:
- src/*.cc
# Render the paths relative to this directory
relative_to: src
# Include also external system headers
generate_system_headers: true
# Include only classes and functions from files in `src` directory
include:
# Include only files belonging to these paths
paths:
- src
```
One distinctive option in `include` diagrams is `relative_to`, which tells `clang-uml` to render all filename
paths relative to this directory.
The following table presents the PlantUML arrows representing relationships in the include diagrams.
| UML | PlantUML |
| ---- | --- |
| Include (local) | ![association](img/puml_association.png) |
| Include (system) | ![dependency](img/puml_dependency.png) |
## Tracking system headers directly included by project sources
In case you would like to include the information about what system headers your projects file include simply add
the following option to the diagram:
```yaml
generate_system_headers: true
```
This will include only system headers directly included from the projects source files (matched by `glob`) and not
their dependencies, for example:
![t40001_include](./test_cases/t40001_include.svg)
Please note that generating include diagram, which contains third party and system library headers will result
in a huge diagram that will be unlikely to be useful.

233
docs/installation.md Normal file
View File

@@ -0,0 +1,233 @@
# Installation
<!-- toc -->
* [Distribution packages](#distribution-packages)
* [Ubuntu](#ubuntu)
* [Fedora](#fedora)
* [Conda](#conda)
* [Windows](#windows)
* [Building from source](#building-from-source)
* [Linux](#linux)
* [macos](#macos)
* [Windows](#windows-1)
* [Visual Studio native build](#visual-studio-native-build)
* [Shell autocompletion scripts](#shell-autocompletion-scripts)
* [Bash](#bash)
* [Zsh](#zsh)
<!-- tocstop -->
### Distribution packages
#### Ubuntu
```bash
# Currently supported Ubuntu versions are Focal, Jammy and Lunar
sudo add-apt-repository ppa:bkryza/clang-uml
sudo apt update
sudo apt install clang-uml
```
#### Fedora
```bash
# Fedora 36
wget https://github.com/bkryza/clang-uml/releases/download/0.4.0/clang-uml-0.4.0-1.fc36.x86_64.rpm
sudo dnf install ./clang-uml-0.4.0-1.fc36.x86_64.rpm
# Fedora 37
wget https://github.com/bkryza/clang-uml/releases/download/0.4.0/clang-uml-0.4.0-1.fc37.x86_64.rpm
sudo dnf install ./clang-uml-0.4.0-1.fc37.x86_64.rpm
# Fedora 38
wget https://github.com/bkryza/clang-uml/releases/download/0.4.0/clang-uml-0.4.0-1.fc38.x86_64.rpm
sudo dnf install ./clang-uml-0.4.0-1.fc38.x86_64.rpm
```
#### Conda
```bash
conda config --add channels conda-forge
conda config --set channel_priority strict
conda install -c bkryza/label/clang-uml clang-uml
```
#### Windows
Download and run the latest Windows installer from
[Releases page](https://github.com/bkryza/clang-uml/releases).
### Building from source
#### Linux
First make sure that you have the following dependencies installed:
```bash
# Ubuntu (clang version will vary depending on Ubuntu version)
apt install ccache cmake libyaml-cpp-dev clang-12 libclang-12-dev libclang-cpp12-dev
```
Then proceed with building the sources:
```bash
git clone https://github.com/bkryza/clang-uml
cd clang-uml
# Please note that top level Makefile is just a convenience wrapper for CMake
make release
release/src/clang-uml --help
# To build using a specific installed version of LLVM use:
LLVM_VERSION=14 make release
# Optionally, to install in default prefix
make install
# or to install in custom prefix
make install DESTDIR=/opt/clang-uml
# or simply
export PATH=$PATH:$PWD/release
```
#### macos
```bash
brew install ccache cmake llvm yaml-cpp
export CC=/usr/local/opt/llvm/bin/clang
export CCX=/usr/local/opt/llvm/bin/clang++
LLVM_VERSION=14 make release
```
#### Windows
##### Visual Studio native build
These steps present how to build and use `clang-uml` natively using Visual Studio only.
First, install the following dependencies manually:
* [Python 3](https://www.python.org/downloads/windows/)
* [Git](https://git-scm.com/download/win)
* [CMake](https://cmake.org/download/)
* [Visual Studio](https://visualstudio.microsoft.com/vs/community/)
> All the following steps should be invoked in `Developer PowerShell for VS`.
Create installation directory for `clang-uml` and its dependencies:
```bash
# This is where clang-uml binary and its dependencies will be installed after build
# If you change this path, adapt all consecutive steps
mkdir C:\clang-uml
# This directory will be removed after build
mkdir C:\clang-uml-tmp
cd C:\clang-uml-tmp
```
Build and install `yaml-cpp`:
```bash
git clone https://github.com/jbeder/yaml-cpp
cd yaml-cpp
git checkout yaml-cpp-0.7.0
cd ..
cmake -S .\yaml-cpp\ -B .\yaml-cpp-build\ -DCMAKE_INSTALL_PREFIX="C:\clang-uml" -Thost=x64
cd yaml-cpp-build
msbuild .\INSTALL.vcxproj -maxcpucount /p:Configuration=Release
```
Build and install `LLVM`:
```bash
pip install psutil
# Update the LLVM branch if necessary
git clone --branch llvmorg-15.0.6 --depth 1 https://github.com/llvm/llvm-project.git llvm
cmake -S .\llvm\llvm -B llvm-build -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_INSTALL_PREFIX="C:\clang-uml" -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=X86 -Thost=x64
cd llvm-build
msbuild .\INSTALL.vcxproj -maxcpucount /p:Configuration=Release
```
Build and install `clang-uml`:
```bash
git clone https://github.com/bkryza/clang-uml
cmake -S .\clang-uml\ -B .\clang-uml-build\ -DCMAKE_INSTALL_PREFIX="C:\clang-uml" -DCMAKE_PREFIX_PATH="C:\clang-uml" -DBUILD_TESTS=OFF -Thost=x64
cd clang-uml-build
msbuild .\INSTALL.vcxproj -maxcpucount /p:Configuration=Release
```
Check if `clang-uml` works:
```bash
cd C:\clang-uml
bin\clang-uml.exe --version
```
It should produce something like:
```bash
clang-uml 0.4.0
Copyright (C) 2021-2023 Bartek Kryza <bkryza@gmail.com>
Built against LLVM/Clang libraries version: 15.0.6
Using LLVM/Clang libraries version: clang version 15.0.6 (https://github.com/llvm/llvm-project.git 088f33605d8a61ff519c580a71b1dd57d16a03f8)
```
Finally, remove the temporary build directory:
```bash
rm -r C:\clang-uml-tmp
```
### Shell autocompletion scripts
For `Linux` and `macos`, Bash and Zsh autocomplete scripts are available, and
if `clang-uml` is installed from a distribution package they should work
out of the box. When installing `clang-uml` from sources the files need to be
installed manually. The completion scripts are available in directory:
* [`packaging/autocomplete`](./packaging/autocomplete)
#### Bash
The `clang-uml.bash-completion` script can be either directly loaded to the
current Bash session using:
```shell
source clang-uml.bash-completion
```
or the script can be copied to the `/etc/bash_completion.d` on Linux or
to `/usr/local/etc/bash_completion.d` on `macos` with `Homebrew`.
```shell
sudo cp clang-uml.bash-completion /etc/bash_completion.d/clang-uml
```
Make sure autocompletion is enabled in your `~/.bashrc` or `~/.bash_profile`:
```shell
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
```
On OSX you might need to install `bash-completion` using Homebrew:
```shell
brew install bash-completion
```
Make sure to the following lines are uncommented in the `~/.bashrc`:
```shell
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
```
#### Zsh
In Zsh, the `_clang-uml` Zsh completion file must be copied to one of the
folders under `$FPATH` variable, and the Zsh terminal should be reopened.
For testing, `_clang-uml` completion function can be updated without
restarting Zsh:
```shell
# Copy _clang-uml somewhere under $FPATH
$ unfunction _clang-uml
$ autoload -U _clang-uml
```

View File

@@ -0,0 +1,23 @@
# Interactive SVG diagrams
<!-- toc -->
<!-- tocstop -->
`clang-uml` in combination with PlantUML's link generation in diagrams allows to
generate interactive diagrams, where clicking on any class, method or call
expression can direct the user directly to the source code or some other
diagram or document available online.
For instance to generate links to GitHub repository directly for most diagram
elements simple add this to your `.clang-uml` file:
```yaml
generate_links:
link: 'https://github.com/myorg/myrepo/blob/{{ git.commit }}/{{ element.source.path }}#L{{ element.source.line }}'
tooltip: '{% if "comment" in element %}{{ abbrv(trim(replace(element.comment, "\n+", " ")), 256) }}{% else %}{{ element.name }}{% endif %}'
```
You can open example diagram [here](https://raw.githubusercontent.com/bkryza/clang-uml/master/docs/test_cases/t00014_class.svg) to see how it works in action.

120
docs/jinja_templates.md Normal file
View File

@@ -0,0 +1,120 @@
# Template engine
<!-- toc -->
* [Accessing comment content](#accessing-comment-content)
* ['plain' comment parser](#plain-comment-parser)
* ['clang' comment parser](#clang-comment-parser)
<!-- tocstop -->
`clang-uml` integrates [inja](https://github.com/pantor/inja) template engine, with several
additional functions which can be used in textual directives within the configuration files,
notes and to generate links and tooltips in diagrams.
The following, are the `clang-uml` additional template functions:
* `ltrim(string)` - left trims a string
* `rtrim(string)` - right trims a string
* `trim(string)` - trims a string
* `substr(string, offset, length)` - returns a substring of a string from offset of length
* `split(string)` - splits a string and returns a list of strings
* `replace(string, regex, replacement)` - returns a string with replace matches to regex with replacement string
* `abbrv(string, length)` - returns a string truncated to length including trailing ellipsis
* `element(string)` - returns the entire JSON context a given diagram element, including the following properties:
* `name` - name of the element
* `type` - type of diagram element (e.g. `class`, `enum`, `package`)
* `namespace` - fully qualified element namespace
* `full_name` - fully qualified element name
* `comment` [optional] - elements comment, if any
* `alias` - internal diagram element alias (e.g. PlantUML alias)
* `alias(string)` - returns a PlantUML alias of an C++ entity represented by string name
* `comment(string)` - returns a comment of an C++ entity represented by string name
Templates allow complex postprocessing of the diagrams, for instance creation of customized PlantUML
notes in the diagrams from comments in the code. Below is an example of using the above commands to
generate notes in the PlantUML diagram from code comments (see also test case [t00050](./test_cases/t00050.md)):
```yaml
plantuml:
after:
# Add a note left of the `A` class with the entire clas comment as content
- >
note left of {{ alias("A") }}
{{ comment("clanguml::t00050::A").formatted }}
end note
# Same as above
- >
note right of {{ element("clanguml::t00050::A").alias }}
{% set e=element("clanguml::t00050::A") %} {{ e.comment.formatted }}
end note
# Add a note left of class 'C' using trimmed text content from the class comment
- >
note left of {{ alias("C") }} #AABBCC
{{ trim(comment("clanguml::t00050::C").text) }}
end note
# For each element in the diagram (class, template, enum):
# - Add a note with \brief comment if exists
# - Add a note with \todo for each element which has it
# - Add a note with template parameter descriptions based on \tparam comment
- >
{# Render brief comments and todos, if any were written for an element #}
{% for e in diagram.elements %}
{% if existsIn(e, "comment") and existsIn(e.comment, "brief") %}
note top of {{ e.alias }} {% if e.type == "class" %} #22AA22 {% else %} #2222AA {% endif %}
{% set c=e.comment %} {{ c.brief.0 }}
end note
{% endif %}
{% if existsIn(e, "comment") and existsIn(e.comment, "todo") %}
{% set c=e.comment %}
{% for t in c.todo %}
note top of {{ e.alias }} #882222
**TODO**
{{ t }}
end note
{% endfor %}
{% endif %}
{# Render template paramete if any #}
{% if existsIn(e, "comment") and existsIn(e.comment, "tparam") %}
{% set c=e.comment %}
note top of {{ e.alias }} #AAAAFF
**Template parameters**
{% for tp in c.tparam %}
//{{ tp.name }}// {{ trim(tp.description) }}
{% endfor %}
end note
{% endif %}
{% endfor %}
```
### Accessing comment content
Text available in the code comment blocks can be accessed in the templates depending on the selected comment
parser.
Currently there are 2 available comment parsers:
* `plain` - default
* `clang` - Clang's comment parser
They can be selected using `comment_parser` config option.
#### 'plain' comment parser
This parser provides only 2 options to the Jinja context:
* `comment.raw` - raw comment text, including comment markers such as `///` or `/**`
* `comment.formatted` - formatted entire comment
#### 'clang' comment parser
This parser uses Clang comment parsing API to extract commands from the command:
* `comment.raw` - raw comment text, including comment markers such as `///` or `/**`
* `comment.formatted` - formatted entire comment
* `comment.<command>.<N>` - where command is the command used in the command e.g. `brief`, `todo`, etc.
and `N` is the index of the command in the array (each comment can have multiple instances of the
same command such as `\todo`)
* `comment.text` - entire text of the comment that is not attached to any command
* `comment.paragraph.<N>` - array of plain text paragraphs, for instance if you don't use `\brief`
commands but often provide brief description as first sentence of the comment separated with a new line
from the rest of the comment

15
docs/license.md Normal file
View File

@@ -0,0 +1,15 @@
## LICENSE
Copyright 2021-present Bartek Kryza <bkryza@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

169
docs/package_diagrams.md Normal file
View File

@@ -0,0 +1,169 @@
# Generating package diagrams
<!-- toc -->
<!-- tocstop -->
Package diagrams are simple diagrams, which can be useful to visualize a high
level structure of a C++ project, by rendering all projects namespaces or
subdirectories as UML packages and their interdependencies.
The minimal config required to generate a package diagram is presented below:
```yaml
# Path to the directory where `compile_commands.json` can be found
compilation_database_dir: _build
# Output directory for the diagrams
output_directory: diagrams
# Diagrams definitions
diagrams:
# Diagram name
my_class_diagram:
# Type of diagram (has to be `package`)
type: package
# Include only translation units matching the following patterns
glob:
- src/*.cc
# Include only classes and functions from files in `src` directory
include:
namespaces:
- ns1::ns2
```
For instance the following C++ code:
```cpp
namespace A::AA {
namespace A1 {
struct CA {
};
}
namespace A2 {
struct CB {
};
}
namespace A3 {
struct CC {
};
}
namespace A4 {
struct CD {
};
}
namespace A5 {
struct CE {
};
}
namespace A6 {
struct CF {
};
}
namespace A7 {
struct CG {
};
}
namespace A8 {
struct CH {
};
}
namespace A9 {
struct CI {
};
}
namespace A10 {
struct CJ {
};
}
namespace A11 {
struct CK {
};
}
namespace A12 {
struct CL {
};
}
namespace A13 {
struct CM {
};
}
namespace A14 {
struct CN {
};
}
namespace A15 {
struct CO {
};
}
namespace A16 {
struct CP {
};
}
namespace A17 {
struct CR {
};
}
}
namespace B::BB::BBB {
class CBA : public A::AA::A6::CF {
public:
A::AA::A1::CA *ca_;
A::AA::A2::CB cb_;
std::shared_ptr<A::AA::A3::CC> cc_;
std::map<std::string, std::unique_ptr<A::AA::A4::CD>> *cd_;
std::array<A::AA::A15::CO, 5> co_;
static A::AA::A16::CP *cp_;
CBA() = default;
CBA(A::AA::A14::CN *cn) { }
friend A::AA::A17::CR;
template <typename... Item> CBA(std::tuple<Item...> &items) { }
void ce(const std::vector<A::AA::A5::CE> /*ce_*/) { }
std::shared_ptr<A::AA::A7::CG> cg() { return {}; }
template <typename T>
void ch(std::map<T, std::shared_ptr<A::AA::A8::CH>> &ch_)
{
}
template <typename T>
std::map<T, std::shared_ptr<A::AA::A9::CI>> ci(T * /*t*/)
{
return {};
}
};
void cj(std::unique_ptr<A::AA::A10::CJ> /*cj_*/) { }
std::unique_ptr<A::AA::A11::CK> ck() { return {}; }
template <typename T>
void cl(std::map<T, std::shared_ptr<A::AA::A12::CL>> & /*ch_*/)
{
}
template <typename T> std::map<T, std::shared_ptr<A::AA::A13::CM>> cm()
{
return {};
}
}
```
results the following diagram:
![package_deps](./test_cases/t30002_package.svg)
By default, packages are generated from C++ namespaces in the code. However,
they can also be generated from the subdirectories in the filesystem tree by
adding the following option to the configuration file:
```yaml
package_type: directory
```
for example checkout this diagram
![t30011_package](./test_cases/t30011_package.svg)

69
docs/quick_start.md Normal file
View File

@@ -0,0 +1,69 @@
# Quick start
<!-- toc -->
<!-- tocstop -->
To add an initial class diagram to your project, follow these steps:
1. Enter your projects top level directory and run:
```bash
clang-uml --init
```
2. Edit the generated `.clang-uml` file and set the following:
```yaml
# Path to `compile_commands.json` directory
compilation_database_dir: .
# Path to diagram output directory
output_directory: diagrams
diagrams:
# This is the name of the diagram
some_class_diagram:
type: class
# Parse only translation units in `src` subdirectory
glob:
- src/*.cc
# Render all names relative to `myproject` namespace
using_namespace: myproject
include:
# Include only elements in `myproject` namespace
namespaces:
- myproject
exclude:
# Exclude elements in `myproject::detail` namespace
namespaces:
- myproject::detail
```
3. Run `clang-uml` in the projects top directory:
```bash
clang-uml
# or to see generation progress for each diagram run
clang-uml --progress
```
4. Generate SVG images from the PlantUML diagrams:
```bash
plantuml -tsvg diagrams/*.puml
```
or generate also MermaidJS diagram (requires [mermaid-cli](https://github.com/mermaid-js/mermaid-cli)):
```
clang-uml --progress -n some_class_diagram -g mermaid
mmdc -i diagrams/some_class_diagram.mmd -o diagrams/some_class_diagram.svg
```
5. Add another diagram:
```bash
clang-uml --add-sequence-diagram another_diagram
```
6. Now list the diagrams defined in the config:
```bash
clang-uml -l
The following diagrams are defined in the config file:
- another_diagram [sequence]
- some_class_diagram [class]
```
7. Generate only the new diagram in JSON format:
```bash
clang-uml -n another_diagram -g json
```

375
docs/sequence_diagrams.md Normal file
View File

@@ -0,0 +1,375 @@
# Generating sequence diagrams
<!-- toc -->
* [Sequence diagram overview](#sequence-diagram-overview)
* [Specifying diagram location constraints](#specifying-diagram-location-constraints)
* [Grouping free functions by file](#grouping-free-functions-by-file)
* [Lambda expressions in sequence diagrams](#lambda-expressions-in-sequence-diagrams)
* [Customizing participants order](#customizing-participants-order)
* [Generating return types](#generating-return-types)
* [Generating condition statements](#generating-condition-statements)
* [Injecting call expressions manually through comments](#injecting-call-expressions-manually-through-comments)
* [Including comments in sequence diagrams](#including-comments-in-sequence-diagrams)
<!-- tocstop -->
The minimal config required to generate a sequence diagram is presented below:
```yaml
# Path to the directory where `compile_commands.json` can be found
compilation_database_dir: _build
# Output directory for the diagrams
output_directory: diagrams
# Diagrams definitions
diagrams:
# Diagram name
my_class_diagram:
# Type of diagram (has to be `sequence`)
type: sequence
# Include only translation units matching the following patterns
glob:
- src/*.cc
# Include only classes and functions from files in `src` directory
include:
paths:
- src
# Exclude calls to/from `std` namespace
exclude:
namespaces:
- std
start_from:
- function: "main(int,const char**)"
```
## Sequence diagram overview
Consider the following diagram:
![extension](test_cases/t20029_sequence.svg)
`clang-uml` generated sequence diagrams are not strictly speaking conforming to
the UML specification. In order to make them more useful for documenting modern
C++ code, the following assumptions were made:
* Free functions are included in the sequence diagrams as standalone
participants (in fact `clang-uml` can be used to generate sequence diagrams
from plain old C code). Functions can also be aggregated into file
participants, based on their place of declaration
* Call expressions in conditional expressions in block statements (e.g. `if`
or `while`) are rendered inside the PlantUML `alt` or `loop` blocks but
wrapped in `[`, `]` brackets
* Lambda expressions are generated as standalone participants, whose name
comprises the parent context where they are defined and the exact source code
location
## Specifying diagram location constraints
Sequence diagrams require a specification of location constraints in order to
determine, which call chains should be included in the diagram. Currently,
there are 3 types of constraints:
* `from` - will include all message call chains which start at the
locations specified in this constraint (this was previously named
`start_from`)
* `to` - will include all message call chains which end at the specified
locations
* `from_to` - will include all call chains which start and end at the specified
location constraints
Currently, the constraints can be a method or a free function, both specified
using the full signature of the function, e.g.
```yaml
from:
- function: "main(int,const char**)"
```
or
```yaml
to:
- function: "clanguml::sequence_diagram::visitor::translation_unit_visitor::VisitCXXRecordDecl(clang::CXXRecordDecl *)"
```
The locations must be fully qualified, and they must match exactly the string
representation of a given function or method in the `clang-uml` model.
In case of the `from_to` constraint, it is necessary to provide both `from`
and `to` locations as follows:
```yaml
from_to:
- [function: "clanguml::t20034::D::d2()",
function: "clanguml::t20034::A::a2()"]
```
To find the exact function signature which can be used as a `from` location,
run `clang-uml` as follows:
```bash
clang-uml --print-from -n main_sequence | grep main
```
or to get all possible `to` locations, run:
```bash
clang-uml --print-to -n main_sequence | grep main
```
Command line flags `--print-from` and `--print-to` will print on stdout all
functions and methods available in the diagram model, and each line of this
output can be directly used as a value of `start_from`, `from_to` or `to`
properties in the config file.
Since that list can be quite large, it's best to filter the output to limit
the number of lines to a subset of possible candidates.
## Grouping free functions by file
By default, `clang-uml` will generate a new participant for each call to a free
function (not method), which can lead to a very large number of participants in
the diagram. If it's an issue, an option can be provided in the diagram
definition:
```yaml
combine_free_functions_into_file_participants: true
```
which will aggregate free functions per source file where they were declared
thus minimizing the diagram size. An example of such diagram is presented below:
![extension](test_cases/t20017_sequence.svg)
## Lambda expressions in sequence diagrams
Lambda expressions in sequence diagrams are... tricky. There is currently
tentative support, which follows the following rules:
* If lambda expression is called within the scope of the diagram, the calls
from the lambda will be placed at the lambda invocation and not declaration
* If lambda expression is passed to some function or method, which is outside
the scope of the diagram (e.g. used in `std::transform` call) the call will
not be generated
* If the lambda is passed as template parameter in instantiation it will not
be generated
Another issue is the naming of lambda participants. Currently, each lambda is
rendered in the diagram as a separate class whose name is composed of the lambda
location in the code (the only unique way of identifying lambdas I was able
to find). For example the following code:
```cpp
#include <algorithm>
#include <functional>
#include <memory>
#include <optional>
#include <utility>
namespace clanguml {
namespace t20012 {
struct A {
void a() { aa(); }
void aa() { aaa(); }
void aaa() { }
};
struct B {
void b() { bb(); }
void bb() { bbb(); }
void bbb() { }
void eb() { }
};
struct C {
void c() { cc(); }
void cc() { ccc(); }
void ccc() { }
};
struct D {
int add5(int arg) const { return arg + 5; }
};
class E {
std::optional<std::shared_ptr<B>> maybe_b;
std::shared_ptr<A> a;
public:
template <typename F> void setup(F &&f) { f(maybe_b); }
};
template <typename F> struct R {
R(F &&f)
: f_{std::move(f)}
{
}
void r() { f_(); }
F f_;
};
void tmain()
{
A a;
B b;
C c;
// The activity shouldn't be marked at the lambda definition, but
// wherever it is actually called...
auto alambda = [&a, &b]() {
a.a();
b.b();
};
// ...like here
alambda();
// There should be no call to B in the sequence diagram as the blambda
// is never called
[[maybe_unused]] auto blambda = [&b]() { b.b(); };
// Nested lambdas should also work
auto clambda = [alambda, &c]() {
c.c();
alambda();
};
clambda();
R r{[&c]() { c.c(); }};
r.r();
D d;
std::vector<int> ints{0, 1, 2, 3, 4};
std::transform(ints.begin(), ints.end(), ints.begin(),
[&d](auto i) { return d.add5(i); });
}
}
}
```
results in the following diagram:
![extension](test_cases/t20012_sequence.svg)
## Customizing participants order
The default participant order in the sequence diagram can be suboptimal in the
sense that consecutive calls can go right, then left, then right again
depending on the specific call chain in the code. It is however
possible to override this order in the diagram definition using
`participants_order` property, for instance like this test case:
```yaml
compilation_database_dir: ..
output_directory: diagrams
diagrams:
t20029_sequence:
type: sequence
glob:
- ../../tests/t20029/t20029.cc
include:
namespaces:
- clanguml::t20029
exclude:
access:
- private
using_namespace: clanguml::t20029
start_from:
- function: clanguml::t20029::tmain()
participants_order:
- "clanguml::t20029::tmain()"
- "clanguml::t20029::Encoder<clanguml::t20029::Retrier<clanguml::t20029::ConnectionPool>>"
- "clanguml::t20029::Retrier<clanguml::t20029::ConnectionPool>"
- "clanguml::t20029::ConnectionPool"
- "clanguml::t20029::encode_b64(std::string &&)"
```
## Generating return types
By default, return messages do not contain the return type information from
the function or method. Instead, if the result is void there is no return
arrow from the activity representing the function body.
It is however possible to enable rendering of return types, by adding the
following configuration option:
```yaml
generate_return_types: true
```
This option only affects the `plantuml` generation, in `json` generator
`return_type` property is always present in the message nodes.
The diagram below presents what it looks like in a PlantUML generated diagram:
![extension](test_cases/t20032_sequence.svg)
## Generating condition statements
Sometimes, it is useful to include actual condition statements (for instance
contents of the `if()` condition in the `alt` or `loop` blocks in the sequence
diagrams, to make them more readable.
This can be enabled using the following option:
```yaml
generate_condition_statements: true
```
An example of a diagram with this feature enabled is presented below:
![extension](test_cases/t20033_sequence.svg)
## Injecting call expressions manually through comments
In some cases, `clang-uml` is not yet able to discover a call expression target
in some line of code. This can include passing function or method address to
some executor (e.g. thread), async calls etc.
However, a call expression can be injected manually through a comment
directive `\uml{note CALLEE}`, when placed just before such line of code, for
example:
```cpp
// \uml{call clanguml::t20038::B::bbb()}
auto bbb_future = std::async(std::launch::deferred, &B::bbb, b);
```
also see the [t20038](test_cases/t20038.md) test case.
Please note that the callee must have fully qualified name including complete
namespace.
In order to enable this, the `.clang-uml` must contain the following option:
```yaml
add_compile_flags:
- -fparse-all-comments
```
otherwise Clang will skip these comments during AST traversal.
## Including comments in sequence diagrams
`clang-uml` can add code comments placed directly before are next to a call
expression as notes in the diagram (see for instance
[t20038](test_cases/t20038_sequence.svg)).
This however is not enabled by default. In order to enable this feature it is
necessary to first of all force Clang to parse all comments in the source
code by adding the following compile flag at the top of `.clang-uml`:
```yaml
add_compile_flags:
- -fparse-all-comments
```
or adding it to the `compile_commands.json` database somehow directly.
Another option needed to generate these comments in the diagram is to set
```yaml
generate_message_comments: true
```
for each sequence diagram, which should include these comments.
In case only selected messages should have some specific comments, instead
of enabling the `generate_message_comments` option, it is possible to use
`\uml{note TEXT}` directive in the comment above the expression, see
[t20001](test_cases/t20001_sequence.svg).

View File

@@ -1,7 +1,13 @@
# Test cases index
* [Class diagrams](#class-diagrams)
* [Sequence diagrams](#sequence-diagrams)
* [Package diagrams](#package-diagrams)
* [Include diagrams](#include-diagrams)
* [Configuration diagrams](#configuration-diagrams)
## Class diagrams
* [t00002](./test_cases/t00002.md) - Basic class inheritance
* [t00003](./test_cases/t00003.md) - Class field and methods
* [t00003](./test_cases/t00003.md) - Class fields and methods
* [t00004](./test_cases/t00004.md) - Nested classes and enums
* [t00005](./test_cases/t00005.md) - Basic class field relationships
* [t00006](./test_cases/t00006.md) - Class field relationships inferred from templates
@@ -43,9 +49,68 @@
* [t00042](./test_cases/t00042.md) - Specialization class template diagram filter test
* [t00043](./test_cases/t00043.md) - Dependants and dependencies class diagram filter test
* [t00044](./test_cases/t00044.md) - Test case for inner type aliases with parent class template args
* [t00045](./test_cases/t00045.md) - Test case for root namespace handling
* [t00046](./test_cases/t00046.md) - Test case for root namespace handling with packages
* [t00047](./test_cases/t00047.md) - Test case for recursive variadic template
* [t00048](./test_cases/t00048.md) - Test case for unique entity id with multiple translation units
* [t00049](./test_cases/t00049.md) - Test case configurable type aliases
* [t00050](./test_cases/t00050.md) - Test case for generating notes from comments using jinja templates
* [t00051](./test_cases/t00051.md) - Test case for relative paths in lambda names
* [t00052](./test_cases/t00052.md) - Test case for template methods rendering
* [t00053](./test_cases/t00053.md) - Test case for `together` layout hint in class diagram
* [t00054](./test_cases/t00054.md) - Test case for `together` layout hint in class diagram with rendered namespaces
* [t00055](./test_cases/t00055.md) - Test case for `row` and `column` layout hints
* [t00056](./test_cases/t00056.md) - Basic C++20 concepts test case
* [t00057](./test_cases/t00057.md) - Test case C99/C11 translation units with structs and unions
* [t00058](./test_cases/t00058.md) - Test case for concepts with variadic parameters and type aliases
* [t00059](./test_cases/t00059.md) - Non-virtual abstract factory pattern using concepts test case
* [t00060](./test_cases/t00060.md) - Parents (base classes) diagram filter test case
* [t00061](./test_cases/t00061.md) - Paths diagram filter test case
* [t00062](./test_cases/t00062.md) - Template specialization matching based on deduced context
* [t00063](./test_cases/t00063.md) - Element types diagram filter test case
* [t00064](./test_cases/t00064.md) - Template type list test case
* [t00065](./test_cases/t00065.md) - Class diagram with packages from directory structure
* [t00066](./test_cases/t00066.md) - Class fields and methods without grouping and sorting
* [t00067](./test_cases/t00067.md) - Class method type filter test case
## Sequence diagrams
* [t20001](./test_cases/t20001.md) - Basic sequence diagram test case
* [t20002](./test_cases/t20002.md) - Free function sequence diagram test case
* [t20003](./test_cases/t20003.md) - Function template sequence diagram test case
* [t20004](./test_cases/t20004.md) - Function template instantiation sequence diagram test case
* [t20005](./test_cases/t20005.md) - Class template basic sequence diagram
* [t20006](./test_cases/t20006.md) - Class template specialization basic sequence diagram
* [t20007](./test_cases/t20007.md) - Class template variadic argument list sequence diagram
* [t20008](./test_cases/t20008.md) - Constexpr if sequence diagram test case
* [t20009](./test_cases/t20009.md) - Smart pointer dereference call expression test case
* [t20010](./test_cases/t20010.md) - Container sequence diagram test case
* [t20011](./test_cases/t20011.md) - Recursive calls sequence diagram test case
* [t20012](./test_cases/t20012.md) - Lambda expression call sequence diagram test case
* [t20013](./test_cases/t20013.md) - Function and method arguments in sequence diagrams test case
* [t20014](./test_cases/t20014.md) - Multiple translation units sequence diagram test case
* [t20015](./test_cases/t20015.md) - Class exclusion by namespace in sequence diagram test case
* [t20016](./test_cases/t20016.md) - Template method specialization sequence diagram test case
* [t20017](./test_cases/t20017.md) - Test case for combine_free_functions_into_file_participants option
* [t20018](./test_cases/t20018.md) - Recursive template sequence diagram test case
* [t20019](./test_cases/t20019.md) - Curiously Recurring Template Pattern sequence diagram test case
* [t20020](./test_cases/t20020.md) - If statement sequence diagram test case
* [t20021](./test_cases/t20021.md) - Loop statements sequence diagram test case
* [t20022](./test_cases/t20022.md) - Forward class declaration sequence diagram test case
* [t20023](./test_cases/t20023.md) - Try/catch statement sequence diagram test case
* [t20024](./test_cases/t20024.md) - Switch statement sequence diagram test case
* [t20025](./test_cases/t20025.md) - Skip decorator sequence diagram test case
* [t20026](./test_cases/t20026.md) - Virtual method call sequence diagram test case
* [t20027](./test_cases/t20027.md) - Filter call expressions based on access test case
* [t20028](./test_cases/t20028.md) - Conditional (ternary) '?:' operator test case
* [t20029](./test_cases/t20029.md) - Combined feature sequence diagram test case
* [t20030](./test_cases/t20030.md) - Constructor and operator call test case
* [t20031](./test_cases/t20031.md) - Callee type sequence diagram filter test case
* [t20032](./test_cases/t20032.md) - Return type generation option sequence diagram test case
* [t20033](./test_cases/t20033.md) - Control statement text in sequence diagram test case
* [t20034](./test_cases/t20034.md) - Test case for rendering all call chains from one activity to another (from_to)
* [t20035](./test_cases/t20035.md) - from_to sequence diagram test case with free functions
* [t20036](./test_cases/t20036.md) - Test case for rendering all call chains leading to an activity (to)
* [t20037](./test_cases/t20037.md) - Test case checking if activities in static variable declarations appear only once
* [t20038](./test_cases/t20038.md) - Sequence diagram comment decorator test case
## Package diagrams
* [t30001](./test_cases/t30001.md) - Basic package diagram test case
* [t30002](./test_cases/t30002.md) - Package dependency test case
@@ -55,6 +120,9 @@
* [t30006](./test_cases/t30006.md) - Package split namespace test case
* [t30007](./test_cases/t30007.md) - Package diagram layout hints test case
* [t30008](./test_cases/t30008.md) - Dependants and dependencies package diagram filter test
* [t30009](./test_cases/t30009.md) - Together layout hint test
* [t30010](./test_cases/t30010.md) - Package diagram with packages from directory structure
* [t30011](./test_cases/t30011.md) - Package diagram with packages from directory structure for plain C
## Include diagrams
* [t40001](./test_cases/t40001.md) - Basic include graph diagram test case
* [t40002](./test_cases/t40002.md) - Cyclic include graph diagram test case

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="362px" preserveAspectRatio="none" style="width:560px;height:362px;" version="1.1" viewBox="0 0 560 362" width="560px" zoomAndPan="magnify">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="383px" preserveAspectRatio="none" style="width:562px;height:383px;" version="1.1" viewBox="0 0 562 383" width="562px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f14wtvfqo5xlus" width="300%" x="-1" y="-1">
<filter height="300%" id="fzb00wvrpe5ac" width="300%" x="-1" y="-1">
<feGaussianBlur result="blurOut" stdDeviation="2.0"/>
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
@@ -9,146 +9,149 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L7" target="_top" title="This is class A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L7" xlink:show="new" xlink:title="This is class A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f14wtvfqo5xlus)" height="73.6094" id="C_0000000004" style="stroke: #A80036; stroke-width: 1.5;" width="125" x="294" y="8"/>
<ellipse cx="348.25" cy="24" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M348.3594,19.3438 L347.2031,24.4219 L349.5313,24.4219 L348.3594,19.3438 Z M346.875,17.1094 L349.8594,17.1094 L353.2188,29.5 L350.7656,29.5 L350,26.4375 L346.7188,26.4375 L345.9688,29.5 L343.5313,29.5 L346.875,17.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="8" x="368.75" y="28.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="295" x2="418" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="295" x2="418" y1="48" y2="48"/>
<text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="250" x="160" y="16.708">Basic class diagram example</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L7" target="_top" title="This is class A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L7" xlink:show="new" xlink:title="This is class A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzb00wvrpe5ac)" height="73.6094" id="C_0000987634239855407298" style="stroke: #A80036; stroke-width: 1.5;" width="125" x="294" y="28.9531"/>
<ellipse cx="348.25" cy="44.9531" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M348.3594,40.2969 L347.2031,45.375 L349.5313,45.375 L348.3594,40.2969 Z M346.875,38.0625 L349.8594,38.0625 L353.2188,50.4531 L350.7656,50.4531 L350,47.3906 L346.7188,47.3906 L345.9688,50.4531 L343.5313,50.4531 L346.875,38.0625 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="8" x="368.75" y="49.1074">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="295" x2="418" y1="60.9531" y2="60.9531"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L10" target="_top" title="Abstract foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L10" xlink:show="new" xlink:title="Abstract foo_a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="300" y="54"/>
<ellipse cx="305" cy="59" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L10" target="_top" title="foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L10" xlink:show="new" xlink:title="foo_a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="300" y="66.9531"/>
<ellipse cx="305" cy="71.9531" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L10" target="_top" title="Abstract foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L10" xlink:show="new" xlink:title="Abstract foo_a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="99" x="314" y="62.2104">foo_a() = 0 : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L10" target="_top" title="foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L10" xlink:show="new" xlink:title="foo_a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="99" x="314" y="75.1636">foo_a() = 0 : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L12" target="_top" title="Abstract foo_c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L12" xlink:show="new" xlink:title="Abstract foo_c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="300" y="66.8047"/>
<ellipse cx="305" cy="71.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L12" target="_top" title="foo_c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L12" xlink:show="new" xlink:title="foo_c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="300" y="79.7578"/>
<ellipse cx="305" cy="84.7578" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L12" target="_top" title="Abstract foo_c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L12" xlink:show="new" xlink:title="Abstract foo_c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="98" x="314" y="75.0151">foo_c() = 0 : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L12" target="_top" title="foo_c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L12" xlink:show="new" xlink:title="foo_c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="98" x="314" y="87.9683">foo_c() = 0 : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L16" target="_top" title="This is class B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L16" xlink:show="new" xlink:title="This is class B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f14wtvfqo5xlus)" height="60.8047" id="C_0000000008" style="stroke: #A80036; stroke-width: 1.5;" width="100" x="70.5" y="143"/>
<ellipse cx="112.5" cy="159" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M115.4688,164.6406 Q114.8906,164.9375 114.25,165.0781 Q113.6094,165.2344 112.9063,165.2344 Q110.4063,165.2344 109.0781,163.5938 Q107.7656,161.9375 107.7656,158.8125 Q107.7656,155.6875 109.0781,154.0313 Q110.4063,152.375 112.9063,152.375 Q113.6094,152.375 114.25,152.5313 Q114.9063,152.6875 115.4688,152.9844 L115.4688,155.7031 Q114.8438,155.125 114.25,154.8594 Q113.6563,154.5781 113.0313,154.5781 Q111.6875,154.5781 111,155.6563 Q110.3125,156.7188 110.3125,158.8125 Q110.3125,160.9063 111,161.9844 Q111.6875,163.0469 113.0313,163.0469 Q113.6563,163.0469 114.25,162.7813 Q114.8438,162.5 115.4688,161.9219 L115.4688,164.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="132.5" y="163.1543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="71.5" x2="169.5" y1="175" y2="175"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="71.5" x2="169.5" y1="183" y2="183"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="295" x2="418" y1="94.5625" y2="94.5625"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L16" target="_top" title="This is class B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L16" xlink:show="new" xlink:title="This is class B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzb00wvrpe5ac)" height="60.8047" id="C_0000594234458687375950" style="stroke: #A80036; stroke-width: 1.5;" width="100" x="69.5" y="163.9531"/>
<ellipse cx="111.5" cy="179.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M114.4688,185.5938 Q113.8906,185.8906 113.25,186.0313 Q112.6094,186.1875 111.9063,186.1875 Q109.4063,186.1875 108.0781,184.5469 Q106.7656,182.8906 106.7656,179.7656 Q106.7656,176.6406 108.0781,174.9844 Q109.4063,173.3281 111.9063,173.3281 Q112.6094,173.3281 113.25,173.4844 Q113.9063,173.6406 114.4688,173.9375 L114.4688,176.6563 Q113.8438,176.0781 113.25,175.8125 Q112.6563,175.5313 112.0313,175.5313 Q110.6875,175.5313 110,176.6094 Q109.3125,177.6719 109.3125,179.7656 Q109.3125,181.8594 110,182.9375 Q110.6875,184 112.0313,184 Q112.6563,184 113.25,183.7344 Q113.8438,183.4531 114.4688,182.875 L114.4688,185.5938 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="131.5" y="184.1074">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="70.5" x2="168.5" y1="195.9531" y2="195.9531"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L18" target="_top" title="foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L18" xlink:show="new" xlink:title="foo_a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="76.5" y="189"/>
<ellipse cx="81.5" cy="194" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L18" target="_top" title="foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L18" xlink:show="new" xlink:title="foo_a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="75.5" y="201.9531"/>
<ellipse cx="80.5" cy="206.9531" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L18" target="_top" title="foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L18" xlink:show="new" xlink:title="foo_a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="90.5" y="197.2104">foo_a() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L18" target="_top" title="foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L18" xlink:show="new" xlink:title="foo_a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="89.5" y="210.1636">foo_a() : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L27" target="_top" title="@brief This is class C - class C has a long comment Vivamus integer non suscipit taciti mus etiam at primis tempor sagittis sit, euismod libero facilisi aptent elementum felis blandit cursus gravida sociis erat ante, eleifend lectus nullam dapibus netus..." xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L27" xlink:show="new" xlink:title="@brief This is class C - class C has a long comment Vivamus integer non suscipit taciti mus etiam at primis tempor sagittis sit, euismod libero facilisi aptent elementum felis blandit cursus gravida sociis erat ante, eleifend lectus nullam dapibus netus..." xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f14wtvfqo5xlus)" height="60.8047" id="C_0000000012" style="stroke: #A80036; stroke-width: 1.5;" width="99" x="307" y="143"/>
<ellipse cx="348.55" cy="159" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M351.5188,164.6406 Q350.9406,164.9375 350.3,165.0781 Q349.6594,165.2344 348.9563,165.2344 Q346.4563,165.2344 345.1281,163.5938 Q343.8156,161.9375 343.8156,158.8125 Q343.8156,155.6875 345.1281,154.0313 Q346.4563,152.375 348.9563,152.375 Q349.6594,152.375 350.3,152.5313 Q350.9563,152.6875 351.5188,152.9844 L351.5188,155.7031 Q350.8938,155.125 350.3,154.8594 Q349.7063,154.5781 349.0813,154.5781 Q347.7375,154.5781 347.05,155.6563 Q346.3625,156.7188 346.3625,158.8125 Q346.3625,160.9063 347.05,161.9844 Q347.7375,163.0469 349.0813,163.0469 Q349.7063,163.0469 350.3,162.7813 Q350.8938,162.5 351.5188,161.9219 L351.5188,164.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="368.45" y="163.1543">C</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="308" x2="405" y1="175" y2="175"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="308" x2="405" y1="183" y2="183"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="70.5" x2="168.5" y1="216.7578" y2="216.7578"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L27" target="_top" title="This is class C - class C has a long comment" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L27" xlink:show="new" xlink:title="This is class C - class C has a long comment" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzb00wvrpe5ac)" height="60.8047" id="C_0001142499429598587507" style="stroke: #A80036; stroke-width: 1.5;" width="99" x="307" y="163.9531"/>
<ellipse cx="348.55" cy="179.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M351.5188,185.5938 Q350.9406,185.8906 350.3,186.0313 Q349.6594,186.1875 348.9563,186.1875 Q346.4563,186.1875 345.1281,184.5469 Q343.8156,182.8906 343.8156,179.7656 Q343.8156,176.6406 345.1281,174.9844 Q346.4563,173.3281 348.9563,173.3281 Q349.6594,173.3281 350.3,173.4844 Q350.9563,173.6406 351.5188,173.9375 L351.5188,176.6563 Q350.8938,176.0781 350.3,175.8125 Q349.7063,175.5313 349.0813,175.5313 Q347.7375,175.5313 347.05,176.6094 Q346.3625,177.6719 346.3625,179.7656 Q346.3625,181.8594 347.05,182.9375 Q347.7375,184 349.0813,184 Q349.7063,184 350.3,183.7344 Q350.8938,183.4531 351.5188,182.875 L351.5188,185.5938 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="368.45" y="184.1074">C</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="308" x2="405" y1="195.9531" y2="195.9531"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L30" target="_top" title="Do nothing unless override is provided" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L30" xlink:show="new" xlink:title="Do nothing unless override is provided" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="313" y="189"/>
<ellipse cx="318" cy="194" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L30" target="_top" title="foo_c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L30" xlink:show="new" xlink:title="foo_c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="313" y="201.9531"/>
<ellipse cx="318" cy="206.9531" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L30" target="_top" title="Do nothing unless override is provided" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L30" xlink:show="new" xlink:title="Do nothing unless override is provided" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="327" y="197.2104">foo_c() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L30" target="_top" title="foo_c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L30" xlink:show="new" xlink:title="foo_c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="327" y="210.1636">foo_c() : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L36" target="_top" title="This is class D which is a little like B and a little like C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L36" xlink:show="new" xlink:title="This is class D which is a little like B and a little like C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f14wtvfqo5xlus)" height="86.4141" id="C_0000000016" style="stroke: #A80036; stroke-width: 1.5;" width="144" x="39.5" y="265"/>
<ellipse cx="102.75" cy="281" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M105.7188,286.6406 Q105.1406,286.9375 104.5,287.0781 Q103.8594,287.2344 103.1563,287.2344 Q100.6563,287.2344 99.3281,285.5938 Q98.0156,283.9375 98.0156,280.8125 Q98.0156,277.6875 99.3281,276.0313 Q100.6563,274.375 103.1563,274.375 Q103.8594,274.375 104.5,274.5313 Q105.1563,274.6875 105.7188,274.9844 L105.7188,277.7031 Q105.0938,277.125 104.5,276.8594 Q103.9063,276.5781 103.2813,276.5781 Q101.9375,276.5781 101.25,277.6563 Q100.5625,278.7188 100.5625,280.8125 Q100.5625,282.9063 101.25,283.9844 Q101.9375,285.0469 103.2813,285.0469 Q103.9063,285.0469 104.5,284.7813 Q105.0938,284.5 105.7188,283.9219 L105.7188,286.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="123.25" y="285.1543">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="40.5" x2="182.5" y1="297" y2="297"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="308" x2="405" y1="216.7578" y2="216.7578"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L36" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L36" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzb00wvrpe5ac)" height="86.4141" id="C_0000060950494980414724" style="stroke: #A80036; stroke-width: 1.5;" width="148" x="33.5" y="285.9531"/>
<ellipse cx="98.75" cy="301.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M101.7188,307.5938 Q101.1406,307.8906 100.5,308.0313 Q99.8594,308.1875 99.1563,308.1875 Q96.6563,308.1875 95.3281,306.5469 Q94.0156,304.8906 94.0156,301.7656 Q94.0156,298.6406 95.3281,296.9844 Q96.6563,295.3281 99.1563,295.3281 Q99.8594,295.3281 100.5,295.4844 Q101.1563,295.6406 101.7188,295.9375 L101.7188,298.6563 Q101.0938,298.0781 100.5,297.8125 Q99.9063,297.5313 99.2813,297.5313 Q97.9375,297.5313 97.25,298.6094 Q96.5625,299.6719 96.5625,301.7656 Q96.5625,303.8594 97.25,304.9375 Q97.9375,306 99.2813,306 Q99.9063,306 100.5,305.7344 Q101.0938,305.4531 101.7188,304.875 L101.7188,307.5938 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="119.25" y="306.1074">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="34.5" x2="180.5" y1="317.9531" y2="317.9531"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L58" target="_top" title="as" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L58" xlink:show="new" xlink:title="as" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="45.5" y="303"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="47.5" y="305"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L41" target="_top" title="foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L41" xlink:show="new" xlink:title="foo_a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="39.5" y="323.9531"/>
<ellipse cx="44.5" cy="328.9531" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L58" target="_top" title="as" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L58" xlink:show="new" xlink:title="as" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="118" x="59.5" y="311.2104">as : std::vector&lt;A*&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L41" target="_top" title="foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L41" xlink:show="new" xlink:title="foo_a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="53.5" y="332.1636">foo_a() : void</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="40.5" x2="182.5" y1="317.8047" y2="317.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L41" target="_top" title="Forward foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L41" xlink:show="new" xlink:title="Forward foo_a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="45.5" y="323.8047"/>
<ellipse cx="50.5" cy="328.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L50" target="_top" title="foo_c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L50" xlink:show="new" xlink:title="foo_c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="39.5" y="336.7578"/>
<ellipse cx="44.5" cy="341.7578" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L41" target="_top" title="Forward foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L41" xlink:show="new" xlink:title="Forward foo_a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="59.5" y="332.0151">foo_a() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L50" target="_top" title="foo_c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L50" xlink:show="new" xlink:title="foo_c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="53.5" y="344.9683">foo_c() : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L50" target="_top" title="Forward foo_c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L50" xlink:show="new" xlink:title="Forward foo_c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="45.5" y="336.6094"/>
<ellipse cx="50.5" cy="341.6094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="34.5" x2="180.5" y1="351.5625" y2="351.5625"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L58" target="_top" title="as" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L58" xlink:show="new" xlink:title="as" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="39.5" y="357.5625"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="41.5" y="359.5625"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L50" target="_top" title="Forward foo_c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L50" xlink:show="new" xlink:title="Forward foo_c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="59.5" y="344.8198">foo_c() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L58" target="_top" title="as" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L58" xlink:show="new" xlink:title="as" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="122" x="53.5" y="365.7729">as : std::vector&lt;A *&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L61" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L61" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f14wtvfqo5xlus)" height="86.4141" id="C_0000000024" style="stroke: #A80036; stroke-width: 1.5;" width="144" x="405.5" y="265"/>
<ellipse cx="469.25" cy="281" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M472.2188,286.6406 Q471.6406,286.9375 471,287.0781 Q470.3594,287.2344 469.6563,287.2344 Q467.1563,287.2344 465.8281,285.5938 Q464.5156,283.9375 464.5156,280.8125 Q464.5156,277.6875 465.8281,276.0313 Q467.1563,274.375 469.6563,274.375 Q470.3594,274.375 471,274.5313 Q471.6563,274.6875 472.2188,274.9844 L472.2188,277.7031 Q471.5938,277.125 471,276.8594 Q470.4063,276.5781 469.7813,276.5781 Q468.4375,276.5781 467.75,277.6563 Q467.0625,278.7188 467.0625,280.8125 Q467.0625,282.9063 467.75,283.9844 Q468.4375,285.0469 469.7813,285.0469 Q470.4063,285.0469 471,284.7813 Q471.5938,284.5 472.2188,283.9219 L472.2188,286.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="489.75" y="285.1543">E</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="406.5" x2="548.5" y1="297" y2="297"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L61" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L61" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzb00wvrpe5ac)" height="86.4141" id="C_0002237886670308966220" style="stroke: #A80036; stroke-width: 1.5;" width="148" x="403.5" y="285.9531"/>
<ellipse cx="469.25" cy="301.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M472.2188,307.5938 Q471.6406,307.8906 471,308.0313 Q470.3594,308.1875 469.6563,308.1875 Q467.1563,308.1875 465.8281,306.5469 Q464.5156,304.8906 464.5156,301.7656 Q464.5156,298.6406 465.8281,296.9844 Q467.1563,295.3281 469.6563,295.3281 Q470.3594,295.3281 471,295.4844 Q471.6563,295.6406 472.2188,295.9375 L472.2188,298.6563 Q471.5938,298.0781 471,297.8125 Q470.4063,297.5313 469.7813,297.5313 Q468.4375,297.5313 467.75,298.6094 Q467.0625,299.6719 467.0625,301.7656 Q467.0625,303.8594 467.75,304.9375 Q468.4375,306 469.7813,306 Q470.4063,306 471,305.7344 Q471.5938,305.4531 472.2188,304.875 L472.2188,307.5938 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="489.75" y="306.1074">E</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="404.5" x2="550.5" y1="317.9531" y2="317.9531"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L83" target="_top" title="as" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L83" xlink:show="new" xlink:title="as" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="411.5" y="303"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="413.5" y="305"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L66" target="_top" title="foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L66" xlink:show="new" xlink:title="foo_a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="409.5" y="323.9531"/>
<ellipse cx="414.5" cy="328.9531" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L83" target="_top" title="as" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L83" xlink:show="new" xlink:title="as" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="118" x="425.5" y="311.2104">as : std::vector&lt;A*&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L66" target="_top" title="foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L66" xlink:show="new" xlink:title="foo_a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="423.5" y="332.1636">foo_a() : void</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="406.5" x2="548.5" y1="317.8047" y2="317.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L66" target="_top" title="Forward foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L66" xlink:show="new" xlink:title="Forward foo_a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="411.5" y="323.8047"/>
<ellipse cx="416.5" cy="328.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L75" target="_top" title="foo_c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L75" xlink:show="new" xlink:title="foo_c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="409.5" y="336.7578"/>
<ellipse cx="414.5" cy="341.7578" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L66" target="_top" title="Forward foo_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L66" xlink:show="new" xlink:title="Forward foo_a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="425.5" y="332.0151">foo_a() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L75" target="_top" title="foo_c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L75" xlink:show="new" xlink:title="foo_c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="423.5" y="344.9683">foo_c() : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L75" target="_top" title="Forward foo_c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L75" xlink:show="new" xlink:title="Forward foo_c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="411.5" y="336.6094"/>
<ellipse cx="416.5" cy="341.6094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="404.5" x2="550.5" y1="351.5625" y2="351.5625"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L83" target="_top" title="as" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L83" xlink:show="new" xlink:title="as" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="409.5" y="357.5625"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="411.5" y="359.5625"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L75" target="_top" title="Forward foo_c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00002/t00002.cc#L75" xlink:show="new" xlink:title="Forward foo_c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="425.5" y="344.8198">foo_c() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L83" target="_top" title="as" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L83" xlink:show="new" xlink:title="as" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="122" x="423.5" y="365.7729">as : std::vector&lt;A *&gt;</text>
</a>
<path d="M150,32.5 L150,57.6328 A0,0 0 0 0 150,57.6328 L259,57.6328 A0,0 0 0 0 259,57.6328 L259,50.5 L293.74,45 L259,42.5 L259,42.5 L249,32.5 L150,32.5 A0,0 0 0 0 150,32.5 " fill="#FBFB77" filter="url(#f14wtvfqo5xlus)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M249,32.5 L249,42.5 L259,42.5 L249,32.5 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="156" y="49.5669">This is class A</text>
<path d="M6,32.5 L6,57.6328 A0,0 0 0 0 6,57.6328 L62.04,57.6328 L106.45,142.88 L70.04,57.6328 L115,57.6328 A0,0 0 0 0 115,57.6328 L115,42.5 L105,32.5 L6,32.5 A0,0 0 0 0 6,32.5 " fill="#FBFB77" filter="url(#f14wtvfqo5xlus)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M105,32.5 L105,42.5 L115,42.5 L105,32.5 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="12" y="49.5669">This is class B</text>
<path d="M219,280.5 L219,304 L183.7,308 L219,312 L219,335.8984 A0,0 0 0 0 219,335.8984 L370,335.8984 A0,0 0 0 0 370,335.8984 L370,290.5 L360,280.5 L219,280.5 A0,0 0 0 0 219,280.5 " fill="#FBFB77" filter="url(#f14wtvfqo5xlus)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M360,280.5 L360,290.5 L370,290.5 L360,280.5 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="89" x="225" y="297.5669">This is class D</text>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="130" x="225" y="312.6997">which is a little like B</text>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="105" x="225" y="327.8325">and a little like C</text>
<path d="M275.3,82.93 C250.73,94.34 227.17,105.59 215.5,112 C198.36,121.42 180.12,132.71 164.25,142.97 " fill="none" id="C_0000000004&lt;-C_0000000008" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="272.58,76.48,293.67,74.45,278.44,89.19,272.58,76.48" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M356.5,102.55 C356.5,116.38 356.5,130.64 356.5,142.64 " fill="none" id="C_0000000004&lt;-C_0000000012" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="349.5,102.25,356.5,82.25,363.5,102.25,349.5,102.25" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M148.98,264.76 C178.83,231.36 221.85,183.75 260.5,143 C278.54,123.98 298.91,103.28 316.24,85.91 " fill="none" id="C_0000000016-&gt;C_0000000004" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="320.11,82.03,310.9248,85.5841,316.5816,85.5727,316.593,91.2295,320.11,82.03" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="263.5" y="171.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="15" x="273.5" y="178.0669">as</text>
<path d="M117.1,224.61 C116.2,237.85 115.23,252.02 114.37,264.8 " fill="none" id="C_0000000008&lt;-C_0000000016" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="110.14,223.72,118.48,204.24,124.11,224.66,110.14,223.72" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M299.34,215.44 C288.94,222.29 278.04,229.08 267.5,235 C239.41,250.78 230.77,251.52 201.5,265 C195.71,267.67 189.71,270.44 183.68,273.24 " fill="none" id="C_0000000012&lt;-C_0000000016" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="295.74,209.43,316.22,204.02,303.58,221.02,295.74,209.43" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M467.23,264.93 C458.11,231.01 443.18,182.59 423.5,143 C413.76,123.4 400.46,103.25 388.29,86.43 " fill="none" id="C_0000000024-&gt;C_0000000004" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="385.22,82.23,387.3048,91.8557,388.1719,86.2656,393.7619,87.1327,385.22,82.23" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="451.5" y="171.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="15" x="461.5" y="178.0669">as</text>
<path d="M189.92,200.95 C192.81,201.99 195.68,203.01 198.5,204 C281.81,233.18 305.35,232.72 387.5,265 C393.28,267.27 399.21,269.73 405.14,272.29 " fill="none" id="C_0000000008&lt;-C_0000000024" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="187.08,207.37,170.72,193.91,191.9,194.23,187.08,207.37" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M397.5,219.39 C410.91,234.08 425.74,250.33 438.96,264.8 " fill="none" id="C_0000000012&lt;-C_0000000024" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="391.97,223.72,383.65,204.24,402.31,214.28,391.97,223.72" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M150,53.4531 L150,78.5859 A0,0 0 0 0 150,78.5859 L259,78.5859 A0,0 0 0 0 259,78.5859 L259,71.4531 L293.74,65.9531 L259,63.4531 L259,63.4531 L249,53.4531 L150,53.4531 A0,0 0 0 0 150,53.4531 " fill="#FBFB77" filter="url(#fzb00wvrpe5ac)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M249,53.4531 L249,63.4531 L259,63.4531 L249,53.4531 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="156" y="70.52">This is class A</text>
<path d="M6,53.4531 L6,78.5859 A0,0 0 0 0 6,78.5859 L61.94,78.5859 L105.69,163.8331 L69.94,78.5859 L115,78.5859 A0,0 0 0 0 115,78.5859 L115,63.4531 L105,53.4531 L6,53.4531 A0,0 0 0 0 6,53.4531 " fill="#FBFB77" filter="url(#fzb00wvrpe5ac)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M105,53.4531 L105,63.4531 L115,63.4531 L105,53.4531 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="12" y="70.52">This is class B</text>
<path d="M217,285.9531 L217,324.9531 L181.57,328.9531 L217,332.9531 L217,371.6172 A0,0 0 0 0 217,371.6172 L368,371.6172 A0,0 0 0 0 368,371.6172 L368,295.9531 L358,285.9531 L217,285.9531 A0,0 0 0 0 217,285.9531 " fill="#FBFB77" filter="url(#fzb00wvrpe5ac)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M358,285.9531 L358,295.9531 L368,295.9531 L358,285.9531 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="235" y="303.02"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="89" x="223" y="318.1528">This is class D</text>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="130" x="223" y="333.2856">which is a little like B</text>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="105" x="223" y="348.4185">and a little like C</text>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="227" y="363.5513"/>
<path d="M275.32,103.9131 C250.75,115.3331 227.18,126.5731 215.5,132.9531 C198.38,142.3031 180.15,153.4731 164.22,163.6531 " fill="none" id="C_0000987634239855407298&lt;-C_0000594234458687375950" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="272.59,97.4631,293.68,95.4331,278.46,110.1731,272.59,97.4631" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M356.5,123.5031 C356.5,137.3331 356.5,151.5931 356.5,163.5931 " fill="none" id="C_0000987634239855407298&lt;-C_0001142499429598587507" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="349.5,123.2031,356.5,103.2031,363.5,123.2031,349.5,123.2031" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M146.15,285.8431 C176.88,252.5231 221.11,204.9431 260.5,163.9531 C278.66,145.0531 299.06,124.3731 316.36,106.9831 " fill="none" id="C_0000060950494980414724-&gt;C_0000987634239855407298" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="320.23,103.0931,311.0448,106.6472,316.7016,106.6358,316.713,112.2926,320.23,103.0931" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="263.5" y="192.0195"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="15" x="273.5" y="199.02">as</text>
<path d="M114.96,245.5631 C113.76,258.8031 112.48,272.9731 111.32,285.7531 " fill="none" id="C_0000594234458687375950&lt;-C_0000060950494980414724" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="108.03,244.4731,116.81,225.1931,121.97,245.7431,108.03,244.4731" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M299.39,236.4931 C288.99,243.3231 278.07,250.0931 267.5,255.9531 C238.61,271.9731 229.64,272.4231 199.5,285.9531 C193.73,288.5431 187.77,291.2331 181.78,293.9431 " fill="none" id="C_0001142499429598587507&lt;-C_0000060950494980414724" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="295.79,230.4731,316.28,225.0731,303.64,242.0731,295.79,230.4731" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M467.23,285.8831 C458.11,251.9631 443.18,203.5431 423.5,163.9531 C413.76,144.3531 400.46,124.2031 388.29,107.3831 " fill="none" id="C_0002237886670308966220-&gt;C_0000987634239855407298" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="385.22,103.1831,387.3048,112.8088,388.1719,107.2188,393.7619,108.0858,385.22,103.1831" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="451.5" y="192.0195"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="15" x="461.5" y="199.02">as</text>
<path d="M188.64,221.4631 C191.97,222.6531 195.27,223.8231 198.5,224.9531 C281.02,253.8031 304.05,254.1931 385.5,285.9531 C391.39,288.2531 397.44,290.7331 403.49,293.3031 " fill="none" id="C_0000594234458687375950&lt;-C_0002237886670308966220" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="185.93,227.9231,169.53,214.5031,190.72,214.7731,185.93,227.9231" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M397.5,240.3431 C410.91,255.0331 425.74,271.2831 438.96,285.7531 " fill="none" id="C_0001142499429598587507&lt;-C_0002237886670308966220" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="391.97,244.6731,383.65,225.1931,402.31,235.2331,391.97,244.6731" style="stroke: #A80036; stroke-width: 1.0;"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -0,0 +1,354 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" aria-labelledby="chart-title-my-svg" aria-roledescription="classDiagram" role="graphics-document document" viewBox="0 -49 643.00390625 581" style="max-width: 643.004px; background-color: white;" width="643.00390625" id="my-svg">
<title id="chart-title-my-svg">Basic class diagram example</title>
<style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#my-svg g.classGroup text .title{font-weight:bolder;}#my-svg .nodeLabel,#my-svg .edgeLabel{color:#131300;}#my-svg .edgeLabel .label rect{fill:#ECECFF;}#my-svg .label text{fill:#131300;}#my-svg .edgeLabel .label span{background:#ECECFF;}#my-svg .classTitle{font-weight:bolder;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .divider{stroke:#9370DB;stroke-width:1;}#my-svg g.clickable{cursor:pointer;}#my-svg g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#my-svg g.classGroup line{stroke:#9370DB;stroke-width:1;}#my-svg .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#my-svg .classLabel .label{fill:#9370DB;font-size:10px;}#my-svg .relation{stroke:#333333;stroke-width:1;fill:none;}#my-svg .dashed-line{stroke-dasharray:3;}#my-svg .dotted-line{stroke-dasharray:1 2;}#my-svg #compositionStart,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #compositionEnd,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionStart,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionEnd,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationStart,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationEnd,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopStart,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopEnd,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg .edgeTerminals{font-size:11px;}#my-svg .classTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style>
<g>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker aggregation classDiagram" id="classDiagram-aggregationStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker aggregation classDiagram" id="classDiagram-aggregationEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker extension classDiagram" id="classDiagram-extensionStart">
<path d="M 1,7 L18,13 V 1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker extension classDiagram" id="classDiagram-extensionEnd">
<path d="M 1,1 V 13 L18,7 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker composition classDiagram" id="classDiagram-compositionStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker composition classDiagram" id="classDiagram-compositionEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker dependency classDiagram" id="classDiagram-dependencyStart">
<path d="M 5,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker dependency classDiagram" id="classDiagram-dependencyEnd">
<path d="M 18,7 L9,13 L14,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker lollipop classDiagram" id="classDiagram-lollipopStart">
<circle r="6" cy="7" cx="6" fill="white" stroke="black"/>
</marker>
</defs>
<g class="root">
<g class="clusters"/>
<g class="edgePaths">
<path marker-start="url(#classDiagram-extensionStart)" style="fill:none" class="edge-pattern-solid relation" id="id1" d="M446.5,176.92166101504392L471.439453125,187.2680508458699C496.37890625,197.61444067669595,546.2578125,218.30722033834797,569.7860734108881,233.4869435025073C593.3143343217762,248.66666666666666,590.4919498935523,258.3333333333333,589.0807576794404,263.1666666666667L587.6695654653284,268"/>
<path marker-start="url(#classDiagram-extensionStart)" style="fill:none" class="edge-pattern-solid relation" id="id2" d="M350.4728594653179,214L347.9552474710983,218.16666666666666C345.4376354768786,222.33333333333334,340.4024114884393,230.66666666666666,337.88479949421964,239.66666666666666C335.3671875,248.66666666666666,335.3671875,258.3333333333333,335.3671875,263.1666666666667L335.3671875,268"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id3" d="M104.48046875,420.18307505317534L90.25325520833333,412.8192292109795C76.02604166666667,405.45538336878354,47.571614583333336,390.7276916843918,33.344401041666664,371.94717917552924C19.1171875,353.1666666666667,19.1171875,330.3333333333333,19.1171875,307.5C19.1171875,284.6666666666667,19.1171875,261.8333333333333,70.72526041666667,238.30293795491482C122.33333333333333,214.77254257649636,225.54947916666666,190.54508515299275,277.1575520833333,178.43135644124092L328.765625,166.3176277294891"/>
<path marker-start="url(#classDiagram-extensionStart)" style="fill:none" class="edge-pattern-solid relation" id="id4" d="M517.26953125,328.8916115796672L495.6634114583333,336.74300964972264C474.0572916666667,344.5944077197781,430.8450520833333,360.29720385988907,389.2994791666667,376.71270088837883C347.75390625,393.1281979168687,307.875,410.2563958337375,287.935546875,418.8204947921718L267.99609375,427.38459375060614"/>
<path marker-start="url(#classDiagram-extensionStart)" style="fill:none" class="edge-pattern-solid relation" id="id5" d="M335.3671875,347L335.3671875,351.8333333333333C335.3671875,356.6666666666667,335.3671875,366.3333333333333,324.138671875,377.67959984632984C312.91015625,389.0258663593263,290.453125,402.0517327186526,279.224609375,408.56466589831575L267.99609375,415.0775990779789"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id6" d="M461.21233742774564,401L457.6600207731214,396.8333333333333C454.1077041184971,392.6666666666667,447.0030708092486,384.3333333333333,443.4507541546243,368.75C439.8984375,353.1666666666667,439.8984375,330.3333333333333,439.8984375,307.5C439.8984375,284.6666666666667,439.8984375,261.8333333333333,437.38082550578036,246.25C434.8632135115607,230.66666666666666,429.8279895231214,222.33333333333334,427.3103775289017,218.16666666666666L424.7927655346821,214"/>
<path marker-start="url(#classDiagram-extensionStart)" style="fill:none" class="edge-pattern-solid relation" id="id7" d="M576.13671875,347L576.13671875,351.8333333333333C576.13671875,356.6666666666667,576.13671875,366.3333333333333,573.126497772158,375.3333333333333C570.116276794316,384.3333333333333,564.095834838632,392.6666666666667,561.08561386079,396.8333333333333L558.075392882948,401"/>
<path marker-start="url(#classDiagram-extensionStart)" style="fill:none" class="edge-pattern-solid relation" id="id8" d="M393.78125,332.9825861983183L410.2161458333333,340.15215516526524C426.6510416666667,347.32172413221224,459.5208333333333,361.6608620661061,476.9795204118497,372.9970976997197C494.4382074903661,384.3333333333333,496.48578998073225,392.6666666666667,497.50958122591527,396.8333333333333L498.5333724710983,401"/>
<path style="fill:none" class="edge-pattern-dotted relation" id="edgeNote9" d="M387.6328125,41L387.6328125,45.166666666666664C387.6328125,49.333333333333336,387.6328125,57.666666666666664,387.6328125,66C387.6328125,74.33333333333333,387.6328125,82.66666666666667,387.6328125,86.83333333333333L387.6328125,91"/>
<path style="fill:none" class="edge-pattern-dotted relation" id="edgeNote10" d="M576.13671875,169L576.13671875,180.66666666666666C576.13671875,192.33333333333334,576.13671875,215.66666666666666,576.13671875,232.16666666666666C576.13671875,248.66666666666666,576.13671875,258.3333333333333,576.13671875,263.1666666666667L576.13671875,268"/>
<path style="fill:none" class="edge-pattern-dotted relation" id="edgeNote11" d="M146.09375,351L146.09375,355.1666666666667C146.09375,359.3333333333333,146.09375,367.6666666666667,148.02749427986512,376C149.96123855973025,384.3333333333333,153.8287271194605,392.6666666666667,155.76247139932562,396.8333333333333L157.69621567919074,401"/>
</g>
<g class="edgeLabels">
<g class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel"/>
</div>
</foreignObject>
</g>
</g>
<g class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel"/>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(19.1171875, 307.5)" class="edgeLabel">
<g transform="translate(-11.1171875, -9)" class="label">
<foreignObject height="18" width="22.234375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-as</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel"/>
</div>
</foreignObject>
</g>
</g>
<g class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel"/>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(439.8984375, 307.5)" class="edgeLabel">
<g transform="translate(-11.1171875, -9)" class="label">
<foreignObject height="18" width="22.234375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-as</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel"/>
</div>
</foreignObject>
</g>
</g>
<g class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel"/>
</div>
</foreignObject>
</g>
</g>
<g class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel"/>
</div>
</foreignObject>
</g>
</g>
<g class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel"/>
</div>
</foreignObject>
</g>
</g>
<g class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel"/>
</div>
</foreignObject>
</g>
</g>
</g>
<g class="nodes">
<a transform="translate(387.6328125, 152.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L7">
<g title="This is class A" id="classId-C_0000987634239855407298-0" class="node default clickable">
<rect height="123" width="117.734375" y="-61.5" x="-58.8671875" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="58.8671875" x1="-58.8671875" class="divider"/>
<line y2="6.5" y1="6.5" x2="58.8671875" x1="-58.8671875" class="divider"/>
<g class="label">
<foreignObject transform="translate( -37.359375, -54)" height="18" width="74.71875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">«abstract»</span>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -32)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A</span>
</div>
</foreignObject>
<foreignObject transform="translate( -51.3671875, 14)" height="18" width="102.734375">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-style: italic; display: inline-block; white-space: nowrap;">
<span style="font-style:italic;" class="nodeLabel">+foo_a() : void</span>
</div>
</foreignObject>
<foreignObject transform="translate( -51.3671875, 36)" height="18" width="101.828125">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-style: italic; display: inline-block; white-space: nowrap;">
<span style="font-style:italic;" class="nodeLabel">+foo_c() : void</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(576.13671875, 307.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L16">
<g title="This is class B" id="classId-C_0000594234458687375950-1" class="node default clickable">
<rect height="79" width="117.734375" y="-39.5" x="-58.8671875" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="58.8671875" x1="-58.8671875" class="divider"/>
<line y2="6.5" y1="6.5" x2="58.8671875" x1="-58.8671875" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -32)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">B</span>
</div>
</foreignObject>
<foreignObject transform="translate( -51.3671875, 14)" height="18" width="102.734375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+foo_a() : void</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(335.3671875, 307.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L27">
<g title="This is class C - class C has a long comment" id="classId-C_0001142499429598587507-2" class="node default clickable">
<rect height="79" width="116.828125" y="-39.5" x="-58.4140625" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="58.4140625" x1="-58.4140625" class="divider"/>
<line y2="6.5" y1="6.5" x2="58.4140625" x1="-58.4140625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -32)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">C</span>
</div>
</foreignObject>
<foreignObject transform="translate( -50.9140625, 14)" height="18" width="101.828125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+foo_c() : void</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(186.23828125, 462.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L36">
<g title="D" id="classId-C_0000060950494980414724-3" class="node default clickable">
<rect height="123" width="163.515625" y="-61.5" x="-81.7578125" class="outer title-state"/>
<line y2="-31.5" y1="-31.5" x2="81.7578125" x1="-81.7578125" class="divider"/>
<line y2="6.5" y1="6.5" x2="81.7578125" x1="-81.7578125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -54)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">D</span>
</div>
</foreignObject>
<foreignObject transform="translate( -74.2578125, -20)" height="18" width="148.515625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-as : std::vector&lt;A *&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -74.2578125, 14)" height="18" width="102.734375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+foo_a() : void</span>
</div>
</foreignObject>
<foreignObject transform="translate( -74.2578125, 36)" height="18" width="101.828125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+foo_c() : void</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(513.64453125, 462.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00002/t00002.cc#L61">
<g title="E" id="classId-C_0002237886670308966220-4" class="node default clickable">
<rect height="123" width="163.515625" y="-61.5" x="-81.7578125" class="outer title-state"/>
<line y2="-31.5" y1="-31.5" x2="81.7578125" x1="-81.7578125" class="divider"/>
<line y2="6.5" y1="6.5" x2="81.7578125" x1="-81.7578125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.3359375, -54)" height="18" width="10.671875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">E</span>
</div>
</foreignObject>
<foreignObject transform="translate( -74.2578125, -20)" height="18" width="148.515625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-as : std::vector&lt;A *&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -74.2578125, 14)" height="18" width="102.734375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+foo_a() : void</span>
</div>
</foreignObject>
<foreignObject transform="translate( -74.2578125, 36)" height="18" width="101.828125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+foo_c() : void</span>
</div>
</foreignObject>
</g>
</g>
</a>
<g transform="translate(387.6328125, 24.5)" id="note0" class="node undefined">
<rect height="33" width="116.359375" y="-16.5" x="-58.1796875" ry="0" rx="0"/>
<g transform="translate(-50.6796875, -9)" style="" class="label">
<rect/>
<foreignObject height="18" width="101.359375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">This is class A</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(576.13671875, 152.5)" id="note1" class="node undefined">
<rect height="33" width="117.25" y="-16.5" x="-58.625" ry="0" rx="0"/>
<g transform="translate(-51.125, -9)" style="" class="label">
<rect/>
<foreignObject height="18" width="102.25">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">This is class B</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(146.09375, 307.5)" id="note2" class="node undefined">
<rect height="87" width="161.71875" y="-43.5" x="-80.859375" ry="0" rx="0"/>
<g transform="translate(-73.359375, -36)" style="" class="label">
<rect/>
<foreignObject height="72" width="146.71875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"><br/> This is class D<br/> which is a little like B<br/> and a little like C<br/></span>
</div>
</foreignObject>
</g>
</g>
</g>
</g>
</g>
<text class="classTitleText" y="-25" x="321.501953125">Basic class diagram example</text>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="398px" preserveAspectRatio="none" style="width:347px;height:398px;" version="1.1" viewBox="0 0 347 398" width="347px" zoomAndPan="magnify">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="486px" preserveAspectRatio="none" style="width:347px;height:486px;" version="1.1" viewBox="0 0 347 486" width="347px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1l2xkuj3moady" width="300%" x="-1" y="-1">
<filter height="300%" id="f1hy5ycw0nj6lf" width="300%" x="-1" y="-1">
<feGaussianBlur result="blurOut" stdDeviation="2.0"/>
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
@@ -9,195 +9,228 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1l2xkuj3moady)" height="380.9219" id="C_0000000035" style="stroke: #A80036; stroke-width: 1.5;" width="329" x="7" y="7"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1hy5ycw0nj6lf)" height="468.9453" id="C_0001371951663534295727" style="stroke: #A80036; stroke-width: 1.5;" width="329" x="7" y="7"/>
<ellipse cx="163.25" cy="23" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M166.2188,28.6406 Q165.6406,28.9375 165,29.0781 Q164.3594,29.2344 163.6563,29.2344 Q161.1563,29.2344 159.8281,27.5938 Q158.5156,25.9375 158.5156,22.8125 Q158.5156,19.6875 159.8281,18.0313 Q161.1563,16.375 163.6563,16.375 Q164.3594,16.375 165,16.5313 Q165.6563,16.6875 166.2188,16.9844 L166.2188,19.7031 Q165.5938,19.125 165,18.8594 Q164.4063,18.5781 163.7813,18.5781 Q162.4375,18.5781 161.75,19.6563 Q161.0625,20.7188 161.0625,22.8125 Q161.0625,24.9063 161.75,25.9844 Q162.4375,27.0469 163.7813,27.0469 Q164.4063,27.0469 165,26.7813 Q165.5938,26.5 166.2188,25.9219 L166.2188,28.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="183.75" y="27.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="8" x2="335" y1="39" y2="39"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L34" target="_top" title="public_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L34" xlink:show="new" xlink:title="public_member" xlink:type="simple">
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L9" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L9" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="45"/>
<ellipse cx="18" cy="50" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<ellipse cx="18" cy="50" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L34" target="_top" title="public_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L34" xlink:show="new" xlink:title="public_member" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="113" x="27" y="53.2104">public_member : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L9" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L9" xlink:show="new" xlink:title="A" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="106" x="27" y="53.2104">A() = default : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L35" target="_top" title="static_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L35" xlink:show="new" xlink:title="static_int" xlink:type="simple">
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L10" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L10" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="57.8047"/>
<ellipse cx="18" cy="62.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<ellipse cx="18" cy="62.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L35" target="_top" title="static_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L35" xlink:show="new" xlink:title="static_int" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="77" x="27" y="66.0151">static_int : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L10" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L10" xlink:show="new" xlink:title="A" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="71" x="27" y="66.0151">A(int i) : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L36" target="_top" title="static_const_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L36" xlink:show="new" xlink:title="static_const_int" xlink:type="simple">
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L21" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L21" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="70.6094"/>
<ellipse cx="18" cy="75.6094" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<ellipse cx="18" cy="75.6094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L36" target="_top" title="static_const_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L36" xlink:show="new" xlink:title="static_const_int" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="149" x="27" y="78.8198">static_const_int : int const</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L21" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L21" xlink:show="new" xlink:title="A" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="137" x="27" y="78.8198">A(A &amp;&amp;) = default : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L37" target="_top" title="auto_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L37" xlink:show="new" xlink:title="auto_member" xlink:type="simple">
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L22" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L22" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="83.4141"/>
<ellipse cx="18" cy="88.4141" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<ellipse cx="18" cy="88.4141" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L37" target="_top" title="auto_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L37" xlink:show="new" xlink:title="auto_member" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="206" x="27" y="91.6245">auto_member : unsigned long const</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L22" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L22" xlink:show="new" xlink:title="A" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="165" x="27" y="91.6245">A(const A &amp;) = deleted : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L42" target="_top" title="protected_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L42" xlink:show="new" xlink:title="protected_member" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="96.2188"/>
<polygon fill="none" points="18,96.2188,22,100.2188,18,104.2188,14,100.2188" style="stroke: #B38D22; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L42" target="_top" title="protected_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L42" xlink:show="new" xlink:title="protected_member" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="134" x="27" y="104.4292">protected_member : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L51" target="_top" title="private_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L51" xlink:show="new" xlink:title="private_member" xlink:type="simple">
<ellipse cx="18" cy="101.2188" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="90" x="27" y="104.4292">A&lt;T&gt;(T t) : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L23" target="_top" title="~A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L23" xlink:show="new" xlink:title="~A" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="109.0234"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="111.0234"/>
<ellipse cx="18" cy="114.0234" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L51" target="_top" title="private_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L51" xlink:show="new" xlink:title="private_member" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="119" x="27" y="117.2339">private_member : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L23" target="_top" title="~A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L23" xlink:show="new" xlink:title="~A" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="115" x="27" y="117.2339">~A() = default : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L52" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L52" xlink:show="new" xlink:title="a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="121.8281"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="123.8281"/>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="8" x2="335" y1="123.8281" y2="123.8281"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L36" target="_top" title="operator=" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L36" xlink:show="new" xlink:title="operator=" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="129.8281"/>
<ellipse cx="18" cy="134.8281" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L52" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L52" xlink:show="new" xlink:title="a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="27" y="130.0386">a : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L36" target="_top" title="operator=" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L36" xlink:show="new" xlink:title="operator=" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="219" x="27" y="138.0386">operator=(A &amp;&amp; other) noexcept : A &amp;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L52" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L52" xlink:show="new" xlink:title="b" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="134.6328"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="136.6328"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L37" target="_top" title="operator=" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L37" xlink:show="new" xlink:title="operator=" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="142.6328"/>
<ellipse cx="18" cy="147.6328" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L52" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L52" xlink:show="new" xlink:title="b" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="27" y="142.8433">b : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L37" target="_top" title="operator=" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L37" xlink:show="new" xlink:title="operator=" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="209" x="27" y="150.8433">operator=(A &amp; other) noexcept : A &amp;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L52" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L52" xlink:show="new" xlink:title="c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="147.4375"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="149.4375"/>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="8" x2="335" y1="157.4375" y2="157.4375"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L30" target="_top" title="operator++" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L30" xlink:show="new" xlink:title="operator++" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="163.4375"/>
<ellipse cx="18" cy="168.4375" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L52" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L52" xlink:show="new" xlink:title="c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="32" x="27" y="155.6479">c : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L30" target="_top" title="operator++" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L30" xlink:show="new" xlink:title="operator++" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="108" x="27" y="171.6479">operator++() : A &amp;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="8" x2="335" y1="162.2422" y2="162.2422"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L9" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L9" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="168.2422"/>
<ellipse cx="18" cy="173.2422" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="8" x2="335" y1="178.2422" y2="178.2422"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L28" target="_top" title="auto_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L28" xlink:show="new" xlink:title="auto_method" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="184.2422"/>
<ellipse cx="18" cy="189.2422" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L9" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L9" xlink:show="new" xlink:title="A" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="50" x="27" y="176.4526">A() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L28" target="_top" title="auto_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L28" xlink:show="new" xlink:title="auto_method" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="108" x="27" y="192.4526">auto_method() : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L10" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L10" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="181.0469"/>
<ellipse cx="18" cy="186.0469" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L25" target="_top" title="basic_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L25" xlink:show="new" xlink:title="basic_method" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="197.0469"/>
<ellipse cx="18" cy="202.0469" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L10" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L10" xlink:show="new" xlink:title="A" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="71" x="27" y="189.2573">A(int i) : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L25" target="_top" title="basic_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L25" xlink:show="new" xlink:title="basic_method" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="122" x="27" y="205.2573">basic_method() : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L14" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L14" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="193.8516"/>
<ellipse cx="18" cy="198.8516" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L27" target="_top" title="const_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L27" xlink:show="new" xlink:title="const_method" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="209.8516"/>
<ellipse cx="18" cy="214.8516" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L14" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L14" xlink:show="new" xlink:title="A" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="81" x="27" y="202.062">A(A&amp;&amp; ) : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L27" target="_top" title="const_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L27" xlink:show="new" xlink:title="const_method" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="158" x="27" y="218.062">const_method() const : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L15" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L15" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="206.6563"/>
<ellipse cx="18" cy="211.6563" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L50" target="_top" title="create_from_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L50" xlink:show="new" xlink:title="create_from_int" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="222.6563"/>
<ellipse cx="18" cy="227.6563" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L15" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L15" xlink:show="new" xlink:title="A" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="106" x="27" y="214.8667">A(A const&amp; ) : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L50" target="_top" title="create_from_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L50" xlink:show="new" xlink:title="create_from_int" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="137" x="27" y="230.8667">create_from_int(int i) : A</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L16" target="_top" title="~A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L16" xlink:show="new" xlink:title="~A" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="219.4609"/>
<ellipse cx="18" cy="224.4609" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L44" target="_top" title="default_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L44" xlink:show="new" xlink:title="default_int" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="235.4609"/>
<ellipse cx="18" cy="240.4609" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L16" target="_top" title="~A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L16" xlink:show="new" xlink:title="~A" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="59" x="27" y="227.6714">~A() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L44" target="_top" title="default_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L44" xlink:show="new" xlink:title="default_int" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="27" y="243.6714">default_int(int i = 12) : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L18" target="_top" title="basic_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L18" xlink:show="new" xlink:title="basic_method" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="232.2656"/>
<ellipse cx="18" cy="237.2656" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L45" target="_top" title="default_string" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L45" xlink:show="new" xlink:title="default_string" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="248.2656"/>
<ellipse cx="18" cy="253.2656" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L18" target="_top" title="basic_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L18" xlink:show="new" xlink:title="basic_method" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="122" x="27" y="240.4761">basic_method() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L45" target="_top" title="default_string" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L45" xlink:show="new" xlink:title="default_string" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="303" x="27" y="256.4761">default_string(int i, std::string s = "abc") : std::string</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L19" target="_top" title="static_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L19" xlink:show="new" xlink:title="static_method" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="245.0703"/>
<ellipse cx="18" cy="250.0703" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L41" target="_top" title="double_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L41" xlink:show="new" xlink:title="double_int" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="261.0703"/>
<ellipse cx="18" cy="266.0703" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L19" target="_top" title="static_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L19" xlink:show="new" xlink:title="static_method" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="114" x="27" y="253.2808">static_method() : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L41" target="_top" title="double_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L41" xlink:show="new" xlink:title="double_int" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="148" x="27" y="269.2808">double_int(const int i) : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L20" target="_top" title="const_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L20" xlink:show="new" xlink:title="const_method" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="257.875"/>
<ellipse cx="18" cy="262.875" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L67" target="_top" title="private_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L67" xlink:show="new" xlink:title="private_method" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="273.875"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="275.875"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L20" target="_top" title="const_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L20" xlink:show="new" xlink:title="const_method" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="158" x="27" y="266.0854">const_method() const : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L67" target="_top" title="private_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L67" xlink:show="new" xlink:title="private_method" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="131" x="27" y="282.0854">private_method() : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L21" target="_top" title="auto_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L21" xlink:show="new" xlink:title="auto_method" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="270.6797"/>
<ellipse cx="18" cy="275.6797" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L58" target="_top" title="protected_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L58" xlink:show="new" xlink:title="protected_method" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="286.6797"/>
<polygon fill="#FFFF44" points="18,286.6797,22,290.6797,18,294.6797,14,290.6797" style="stroke: #B38D22; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L21" target="_top" title="auto_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L21" xlink:show="new" xlink:title="auto_method" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="108" x="27" y="278.8901">auto_method() : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L58" target="_top" title="protected_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L58" xlink:show="new" xlink:title="protected_method" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="27" y="294.8901">protected_method() : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L23" target="_top" title="double_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L23" xlink:show="new" xlink:title="double_int" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="283.4844"/>
<ellipse cx="18" cy="288.4844" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L39" target="_top" title="size" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L39" xlink:show="new" xlink:title="size" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="299.4844"/>
<ellipse cx="18" cy="304.4844" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L23" target="_top" title="double_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L23" xlink:show="new" xlink:title="double_int" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="148" x="27" y="291.6948">double_int(int const i) : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L39" target="_top" title="size" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L39" xlink:show="new" xlink:title="size" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="195" x="27" y="307.6948">size() constexpr const : std::size_t</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L24" target="_top" title="sum" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L24" xlink:show="new" xlink:title="sum" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="296.2891"/>
<ellipse cx="18" cy="301.2891" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L26" target="_top" title="static_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L26" xlink:show="new" xlink:title="static_method" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="312.2891"/>
<ellipse cx="18" cy="317.2891" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L24" target="_top" title="sum" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L24" xlink:show="new" xlink:title="sum" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="259" x="27" y="304.4995">sum(double const a, double const b) : double</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L26" target="_top" title="static_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L26" xlink:show="new" xlink:title="static_method" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="114" x="27" y="320.4995">static_method() : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L26" target="_top" title="default_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L26" xlink:show="new" xlink:title="default_int" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="309.0938"/>
<ellipse cx="18" cy="314.0938" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L42" target="_top" title="sum" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L42" xlink:show="new" xlink:title="sum" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="325.0938"/>
<ellipse cx="18" cy="330.0938" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L26" target="_top" title="default_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L26" xlink:show="new" xlink:title="default_int" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="27" y="317.3042">default_int(int i = 12) : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L42" target="_top" title="sum" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L42" xlink:show="new" xlink:title="sum" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="235" x="27" y="333.3042">sum(const double a, const double b) : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L27" target="_top" title="default_string" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L27" xlink:show="new" xlink:title="default_string" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="321.8984"/>
<ellipse cx="18" cy="326.8984" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="8" x2="335" y1="339.8984" y2="339.8984"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L70" target="_top" title="a_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L70" xlink:show="new" xlink:title="a_" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="345.8984"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="347.8984"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L27" target="_top" title="default_string" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L27" xlink:show="new" xlink:title="default_string" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="303" x="27" y="330.1089">default_string(int i, std::string s = "abc") : std::string</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L70" target="_top" title="a_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L70" xlink:show="new" xlink:title="a_" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="39" x="27" y="354.1089">a_ : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L32" target="_top" title="create_from_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L32" xlink:show="new" xlink:title="create_from_int" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="334.7031"/>
<ellipse cx="18" cy="339.7031" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L55" target="_top" title="auto_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L55" xlink:show="new" xlink:title="auto_member" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="358.7031"/>
<ellipse cx="18" cy="363.7031" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L32" target="_top" title="create_from_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L32" xlink:show="new" xlink:title="create_from_int" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="137" x="27" y="342.9136">create_from_int(int i) : A</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L55" target="_top" title="auto_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L55" xlink:show="new" xlink:title="auto_member" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="206" x="27" y="366.9136">auto_member : const unsigned long</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L40" target="_top" title="protected_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L40" xlink:show="new" xlink:title="protected_method" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="347.5078"/>
<polygon fill="#FFFF44" points="18,347.5078,22,351.5078,18,355.5078,14,351.5078" style="stroke: #B38D22; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L70" target="_top" title="b_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L70" xlink:show="new" xlink:title="b_" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="371.5078"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="373.5078"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L40" target="_top" title="protected_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L40" xlink:show="new" xlink:title="protected_method" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="27" y="355.7183">protected_method() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L70" target="_top" title="b_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L70" xlink:show="new" xlink:title="b_" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="39" x="27" y="379.7183">b_ : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L49" target="_top" title="private_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L49" xlink:show="new" xlink:title="private_method" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="360.3125"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="362.3125"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L70" target="_top" title="c_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L70" xlink:show="new" xlink:title="c_" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="384.3125"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="386.3125"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L49" target="_top" title="private_method" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L49" xlink:show="new" xlink:title="private_method" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="131" x="27" y="368.5229">private_method() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L70" target="_top" title="c_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L70" xlink:show="new" xlink:title="c_" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="38" x="27" y="392.5229">c_ : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L44" target="_top" title="compare" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L44" xlink:show="new" xlink:title="compare" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="373.1172"/>
<polygon fill="#FFFF44" points="18,373.1172,22,377.1172,18,381.1172,14,377.1172" style="stroke: #B38D22; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L62" target="_top" title="compare" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L62" xlink:show="new" xlink:title="compare" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="397.1172"/>
<polygon fill="#FFFF44" points="18,397.1172,22,401.1172,18,405.1172,14,401.1172" style="stroke: #B38D22; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L44" target="_top" title="compare" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00003/t00003.cc#L44" xlink:show="new" xlink:title="compare" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="232" x="27" y="381.3276">compare : std::function&lt;bool(int const)&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L62" target="_top" title="compare" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L62" xlink:show="new" xlink:title="compare" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="236" x="27" y="405.3276">compare : std::function&lt;bool (const int)&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L69" target="_top" title="private_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L69" xlink:show="new" xlink:title="private_member" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="409.9219"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="411.9219"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L69" target="_top" title="private_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L69" xlink:show="new" xlink:title="private_member" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="119" x="27" y="418.1323">private_member : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L60" target="_top" title="protected_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L60" xlink:show="new" xlink:title="protected_member" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="422.7266"/>
<polygon fill="none" points="18,422.7266,22,426.7266,18,430.7266,14,426.7266" style="stroke: #B38D22; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L60" target="_top" title="protected_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L60" xlink:show="new" xlink:title="protected_member" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="134" x="27" y="430.937">protected_member : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L52" target="_top" title="public_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L52" xlink:show="new" xlink:title="public_member" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="435.5313"/>
<ellipse cx="18" cy="440.5313" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L52" target="_top" title="public_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L52" xlink:show="new" xlink:title="public_member" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="113" x="27" y="443.7417">public_member : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L54" target="_top" title="static_const_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L54" xlink:show="new" xlink:title="static_const_int" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="448.3359"/>
<ellipse cx="18" cy="453.3359" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L54" target="_top" title="static_const_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L54" xlink:show="new" xlink:title="static_const_int" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="149" x="27" y="456.5464">static_const_int : const int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L53" target="_top" title="static_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L53" xlink:show="new" xlink:title="static_int" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="13" y="461.1406"/>
<ellipse cx="18" cy="466.1406" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L53" target="_top" title="static_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L53" xlink:show="new" xlink:title="static_int" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="77" x="27" y="469.3511">static_int : int</text>
</a>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -0,0 +1,232 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" aria-roledescription="classDiagram" role="graphics-document document" viewBox="0 0 400.75 755" style="max-width: 400.75px; background-color: white;" width="400.75" id="my-svg">
<style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#my-svg g.classGroup text .title{font-weight:bolder;}#my-svg .nodeLabel,#my-svg .edgeLabel{color:#131300;}#my-svg .edgeLabel .label rect{fill:#ECECFF;}#my-svg .label text{fill:#131300;}#my-svg .edgeLabel .label span{background:#ECECFF;}#my-svg .classTitle{font-weight:bolder;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .divider{stroke:#9370DB;stroke-width:1;}#my-svg g.clickable{cursor:pointer;}#my-svg g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#my-svg g.classGroup line{stroke:#9370DB;stroke-width:1;}#my-svg .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#my-svg .classLabel .label{fill:#9370DB;font-size:10px;}#my-svg .relation{stroke:#333333;stroke-width:1;fill:none;}#my-svg .dashed-line{stroke-dasharray:3;}#my-svg .dotted-line{stroke-dasharray:1 2;}#my-svg #compositionStart,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #compositionEnd,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionStart,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionEnd,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationStart,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationEnd,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopStart,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopEnd,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg .edgeTerminals{font-size:11px;}#my-svg .classTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style>
<g>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker aggregation classDiagram" id="classDiagram-aggregationStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker aggregation classDiagram" id="classDiagram-aggregationEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker extension classDiagram" id="classDiagram-extensionStart">
<path d="M 1,7 L18,13 V 1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker extension classDiagram" id="classDiagram-extensionEnd">
<path d="M 1,1 V 13 L18,7 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker composition classDiagram" id="classDiagram-compositionStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker composition classDiagram" id="classDiagram-compositionEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker dependency classDiagram" id="classDiagram-dependencyStart">
<path d="M 5,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker dependency classDiagram" id="classDiagram-dependencyEnd">
<path d="M 18,7 L9,13 L14,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker lollipop classDiagram" id="classDiagram-lollipopStart">
<circle r="6" cy="7" cx="6" fill="white" stroke="black"/>
</marker>
</defs>
<g class="root">
<g class="clusters"/>
<g class="edgePaths"/>
<g class="edgeLabels"/>
<g class="nodes">
<a transform="translate(200.375, 377.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00003/t00003.cc#L7">
<g title="A" id="classId-C_0001371951663534295727-0" class="node default clickable">
<rect height="739" width="384.75" y="-369.5" x="-192.375" class="outer title-state"/>
<line y2="-339.5" y1="-339.5" x2="192.375" x1="-192.375" class="divider"/>
<line y2="-103.5" y1="-103.5" x2="192.375" x1="-192.375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -362)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, -328)" height="18" width="53.359375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-a_ : int</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, -306)" height="18" width="263.734375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+auto_member : const unsigned long</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, -284)" height="18" width="53.359375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-b_ : int</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, -262)" height="18" width="52.46875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-c_ : int</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, -240)" height="18" width="294.390625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">#compare : std::function&lt;bool (const int)&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, -218)" height="18" width="151.171875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-private_member : int</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, -196)" height="18" width="173.421875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">#protected_member : int</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, -174)" height="18" width="148.96875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+public_member : int</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, -152)" height="18" width="192.546875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+static_const_int : const int</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, -130)" height="18" width="102.71875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+static_int : int</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, -96)" height="18" width="134.734375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+A() : [default] void</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, -74)" height="18" width="98.265625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+A(int i) : void</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, -52)" height="18" width="170.3125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+A(A &amp;&amp;) : [default] void</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, -30)" height="18" width="140.078125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+A(const A &amp;) : void</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, -8)" height="18" width="91.734375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+A(T t) : void</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 14)" height="18" width="144.078125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+~A() : [default] void</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 36)" height="18" width="202.796875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+operator=(A &amp;&amp; other) : A &amp;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 58)" height="18" width="192.125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+operator=(A &amp; other) : A &amp;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 80)" height="18" width="135.640625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+operator++() : A &amp;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 102)" height="18" width="143.640625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+auto_method() : int</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 124)" height="18" width="162.3125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+basic_method() : void</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 146)" height="18" width="214.78125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+const_method() : [const] void</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 168)" height="18" width="179.1875">
<div xmlns="http://www.w3.org/1999/xhtml" style="text-decoration: underline; display: inline-block; white-space: nowrap;">
<span style="text-decoration:underline;" class="nodeLabel">+create_from_int(int i) : A</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 190)" height="18" width="185">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+default_int(int i = 12) : int</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 212)" height="18" width="369.75">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+default_string(int i, std::string s = "abc") : std::string</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 234)" height="18" width="191.671875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+double_int(const int i) : int</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 256)" height="18" width="168.96875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-private_method() : void</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 278)" height="18" width="191.21875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">#protected_method() : void</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 300)" height="18" width="259.21875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+size() : [const,constexpr] std::size_t</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 322)" height="18" width="149.84375">
<div xmlns="http://www.w3.org/1999/xhtml" style="text-decoration: underline; display: inline-block; white-space: nowrap;">
<span style="text-decoration:underline;" class="nodeLabel">+static_method() : int</span>
</div>
</foreignObject>
<foreignObject transform="translate( -184.875, 344)" height="18" width="297.515625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+sum(const double a, const double b) : int</span>
</div>
</foreignObject>
</g>
</g>
</a>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="346px" preserveAspectRatio="none" style="width:177px;height:346px;" version="1.1" viewBox="0 0 177 346" width="177px" zoomAndPan="magnify">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="374px" preserveAspectRatio="none" style="width:1071px;height:374px;" version="1.1" viewBox="0 0 1071 374" width="1071px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1t6pvqv0if11q" width="300%" x="-1" y="-1">
<filter height="300%" id="fms86jxittqx4" width="300%" x="-1" y="-1">
<feGaussianBlur result="blurOut" stdDeviation="2.0"/>
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
@@ -9,66 +9,237 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L4" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L4" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1t6pvqv0if11q)" height="73.6094" id="C_0000000050" style="stroke: #A80036; stroke-width: 1.5;" width="129" x="25" y="262"/>
<ellipse cx="81.25" cy="278" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M84.2188,283.6406 Q83.6406,283.9375 83,284.0781 Q82.3594,284.2344 81.6563,284.2344 Q79.1563,284.2344 77.8281,282.5938 Q76.5156,280.9375 76.5156,277.8125 Q76.5156,274.6875 77.8281,273.0313 Q79.1563,271.375 81.6563,271.375 Q82.3594,271.375 83,271.5313 Q83.6563,271.6875 84.2188,271.9844 L84.2188,274.7031 Q83.5938,274.125 83,273.8594 Q82.4063,273.5781 81.7813,273.5781 Q80.4375,273.5781 79.75,274.6563 Q79.0625,275.7188 79.0625,277.8125 Q79.0625,279.9063 79.75,280.9844 Q80.4375,282.0469 81.7813,282.0469 Q82.4063,282.0469 83,281.7813 Q83.5938,281.5 84.2188,280.9219 L84.2188,283.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="101.75" y="282.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="26" x2="153" y1="294" y2="294"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="26" x2="153" y1="302" y2="302"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L4" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L4" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="48" id="C_0001232624428734051711" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="18" y="168"/>
<ellipse cx="33" cy="184" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M35.9688,189.6406 Q35.3906,189.9375 34.75,190.0781 Q34.1094,190.2344 33.4063,190.2344 Q30.9063,190.2344 29.5781,188.5938 Q28.2656,186.9375 28.2656,183.8125 Q28.2656,180.6875 29.5781,179.0313 Q30.9063,177.375 33.4063,177.375 Q34.1094,177.375 34.75,177.5313 Q35.4063,177.6875 35.9688,177.9844 L35.9688,180.7031 Q35.3438,180.125 34.75,179.8594 Q34.1563,179.5781 33.5313,179.5781 Q32.1875,179.5781 31.5,180.6563 Q30.8125,181.7188 30.8125,183.8125 Q30.8125,185.9063 31.5,186.9844 Q32.1875,188.0469 33.5313,188.0469 Q34.1563,188.0469 34.75,187.7813 Q35.3438,187.5 35.9688,186.9219 L35.9688,189.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="47" y="188.1543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="19" x2="57" y1="200" y2="200"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="19" x2="57" y1="208" y2="208"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L6" target="_top" title="foo" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L6" xlink:show="new" xlink:title="foo" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="31" y="308"/>
<ellipse cx="36" cy="313" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L6" target="_top" title="foo" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L6" xlink:show="new" xlink:title="foo" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="96" x="45" y="316.2104">foo() const : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L16" target="_top" title="foo2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L16" xlink:show="new" xlink:title="foo2" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="31" y="320.8047"/>
<ellipse cx="36" cy="325.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L16" target="_top" title="foo2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L16" xlink:show="new" xlink:title="foo2" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="103" x="45" y="329.0151">foo2() const : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L8" target="_top" title="AA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L8" xlink:show="new" xlink:title="AA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1t6pvqv0if11q)" height="48" id="C_0000000052" style="stroke: #A80036; stroke-width: 1.5;" width="48" x="65.5" y="154"/>
<ellipse cx="80.5" cy="170" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M83.4688,175.6406 Q82.8906,175.9375 82.25,176.0781 Q81.6094,176.2344 80.9063,176.2344 Q78.4063,176.2344 77.0781,174.5938 Q75.7656,172.9375 75.7656,169.8125 Q75.7656,166.6875 77.0781,165.0313 Q78.4063,163.375 80.9063,163.375 Q81.6094,163.375 82.25,163.5313 Q82.9063,163.6875 83.4688,163.9844 L83.4688,166.7031 Q82.8438,166.125 82.25,165.8594 Q81.6563,165.5781 81.0313,165.5781 Q79.6875,165.5781 79,166.6563 Q78.3125,167.7188 78.3125,169.8125 Q78.3125,171.9063 79,172.9844 Q79.6875,174.0469 81.0313,174.0469 Q81.6563,174.0469 82.25,173.7813 Q82.8438,173.5 83.4688,172.9219 L83.4688,175.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="16" x="94.5" y="174.1543">AA</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="66.5" x2="112.5" y1="186" y2="186"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="66.5" x2="112.5" y1="194" y2="194"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L10" target="_top" title="Lights" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L10" xlink:show="new" xlink:title="Lights" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1t6pvqv0if11q)" height="86.4141" id="C_0000000054" style="stroke: #A80036; stroke-width: 1.5;" width="69" x="6" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L6" target="_top" title="B##AA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L6" xlink:show="new" xlink:title="B##AA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="86.4141" id="C_0001630205507215126623" style="stroke: #A80036; stroke-width: 1.5;" width="64" x="6" y="8"/>
<ellipse cx="21" cy="24" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M25.1094,30 L17.3906,30 L17.3906,17.6094 L25.1094,17.6094 L25.1094,19.7656 L19.8438,19.7656 L19.8438,22.4375 L24.6094,22.4375 L24.6094,24.5938 L19.8438,24.5938 L19.8438,27.8438 L25.1094,27.8438 L25.1094,30 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="37" x="35" y="28.1543">Lights</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="74" y1="40" y2="40"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="35" x="12" y="54.2104">Green</text>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="36" x="12" y="67.0151">Yellow</text>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="21" x="12" y="79.8198">Red</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="74" y1="86.4141" y2="86.4141"/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="32" x="35" y="28.1543">B::AA</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="69" y1="40" y2="40"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="27" x="12" y="54.2104">AA_1</text>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="27" x="12" y="67.0151">AA_2</text>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="27" x="12" y="79.8198">AA_3</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="69" y1="86.4141" y2="86.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L12" target="_top" title="AAA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00004/t00004.cc#L12" xlink:show="new" xlink:title="AAA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1t6pvqv0if11q)" height="48" id="C_0000000058" style="stroke: #A80036; stroke-width: 1.5;" width="56" x="110.5" y="27"/>
<ellipse cx="125.5" cy="43" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M128.4688,48.6406 Q127.8906,48.9375 127.25,49.0781 Q126.6094,49.2344 125.9063,49.2344 Q123.4063,49.2344 122.0781,47.5938 Q120.7656,45.9375 120.7656,42.8125 Q120.7656,39.6875 122.0781,38.0313 Q123.4063,36.375 125.9063,36.375 Q126.6094,36.375 127.25,36.5313 Q127.9063,36.6875 128.4688,36.9844 L128.4688,39.7031 Q127.8438,39.125 127.25,38.8594 Q126.6563,38.5781 126.0313,38.5781 Q124.6875,38.5781 124,39.6563 Q123.3125,40.7188 123.3125,42.8125 Q123.3125,44.9063 124,45.9844 Q124.6875,47.0469 126.0313,47.0469 Q126.6563,47.0469 127.25,46.7813 Q127.8438,46.5 128.4688,45.9219 L128.4688,48.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="24" x="139.5" y="47.1543">AAA</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="111.5" x2="165.5" y1="59" y2="59"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="111.5" x2="165.5" y1="67" y2="67"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L9" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L9" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="73.6094" id="C_0001552274940876611774" style="stroke: #A80036; stroke-width: 1.5;" width="129" x="176.5" y="290"/>
<ellipse cx="232.75" cy="306" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M235.7188,311.6406 Q235.1406,311.9375 234.5,312.0781 Q233.8594,312.2344 233.1563,312.2344 Q230.6563,312.2344 229.3281,310.5938 Q228.0156,308.9375 228.0156,305.8125 Q228.0156,302.6875 229.3281,301.0313 Q230.6563,299.375 233.1563,299.375 Q233.8594,299.375 234.5,299.5313 Q235.1563,299.6875 235.7188,299.9844 L235.7188,302.7031 Q235.0938,302.125 234.5,301.8594 Q233.9063,301.5781 233.2813,301.5781 Q231.9375,301.5781 231.25,302.6563 Q230.5625,303.7188 230.5625,305.8125 Q230.5625,307.9063 231.25,308.9844 Q231.9375,310.0469 233.2813,310.0469 Q233.9063,310.0469 234.5,309.7813 Q235.0938,309.5 235.7188,308.9219 L235.7188,311.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="253.25" y="310.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="177.5" x2="304.5" y1="322" y2="322"/>
</a>
<path d="M89.5,202.23 C89.5,214.91 89.5,231.15 89.5,246.64 " fill="none" id="C_0000000052-&gt;C_0000000050" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="89.5" cy="253.71" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="89.5" x2="89.5" y1="245.71" y2="261.71"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="97.5" x2="81.5" y1="253.71" y2="253.71"/>
<path d="M57.09,94.32 C62.8,108.88 69.15,125.08 74.71,139.26 " fill="none" id="C_0000000054-&gt;C_0000000052" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="77.4428" cy="146.2208" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="74.5256" x2="80.36" y1="138.7717" y2="153.67"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="84.892" x2="69.9936" y1="143.3036" y2="149.138"/>
<path d="M129.4,75.22 C122.32,93.29 112.35,118.72 104.15,139.64 " fill="none" id="C_0000000058-&gt;C_0000000052" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="101.4738" cy="146.4634" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="104.3976" x2="98.55" y1="139.0169" y2="153.91"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="108.9204" x2="94.0272" y1="149.3872" y2="143.5396"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L11" target="_top" title="foo" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L11" xlink:show="new" xlink:title="foo" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="182.5" y="328"/>
<ellipse cx="187.5" cy="333" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L11" target="_top" title="foo" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L11" xlink:show="new" xlink:title="foo" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="96" x="196.5" y="336.2104">foo() const : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L20" target="_top" title="foo2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L20" xlink:show="new" xlink:title="foo2" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="182.5" y="340.8047"/>
<ellipse cx="187.5" cy="345.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L20" target="_top" title="foo2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L20" xlink:show="new" xlink:title="foo2" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="103" x="196.5" y="349.0151">foo2() const : void</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="177.5" x2="304.5" y1="355.6094" y2="355.6094"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L13" target="_top" title="A##AA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L13" xlink:show="new" xlink:title="A##AA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="48" id="C_0001742499843727859552" style="stroke: #A80036; stroke-width: 1.5;" width="64" x="209" y="168"/>
<ellipse cx="224" cy="184" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M226.9688,189.6406 Q226.3906,189.9375 225.75,190.0781 Q225.1094,190.2344 224.4063,190.2344 Q221.9063,190.2344 220.5781,188.5938 Q219.2656,186.9375 219.2656,183.8125 Q219.2656,180.6875 220.5781,179.0313 Q221.9063,177.375 224.4063,177.375 Q225.1094,177.375 225.75,177.5313 Q226.4063,177.6875 226.9688,177.9844 L226.9688,180.7031 Q226.3438,180.125 225.75,179.8594 Q225.1563,179.5781 224.5313,179.5781 Q223.1875,179.5781 222.5,180.6563 Q221.8125,181.7188 221.8125,183.8125 Q221.8125,185.9063 222.5,186.9844 Q223.1875,188.0469 224.5313,188.0469 Q225.1563,188.0469 225.75,187.7813 Q226.3438,187.5 226.9688,186.9219 L226.9688,189.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="32" x="238" y="188.1543">A::AA</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="210" x2="272" y1="200" y2="200"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="210" x2="272" y1="208" y2="208"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L15" target="_top" title="A##AA##Lights" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L15" xlink:show="new" xlink:title="A##AA##Lights" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="86.4141" id="C_0000590936874508841244" style="stroke: #A80036; stroke-width: 1.5;" width="109" x="105.5" y="8"/>
<ellipse cx="120.5" cy="24" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M124.6094,30 L116.8906,30 L116.8906,17.6094 L124.6094,17.6094 L124.6094,19.7656 L119.3438,19.7656 L119.3438,22.4375 L124.1094,22.4375 L124.1094,24.5938 L119.3438,24.5938 L119.3438,27.8438 L124.6094,27.8438 L124.6094,30 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="77" x="134.5" y="28.1543">A::AA::Lights</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="106.5" x2="213.5" y1="40" y2="40"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="35" x="111.5" y="54.2104">Green</text>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="36" x="111.5" y="67.0151">Yellow</text>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="21" x="111.5" y="79.8198">Red</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="106.5" x2="213.5" y1="86.4141" y2="86.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L17" target="_top" title="A##AA##AAA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L17" xlink:show="new" xlink:title="A##AA##AAA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="48" id="C_0001430186633004282131" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="250" y="27"/>
<ellipse cx="265" cy="43" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M267.9688,48.6406 Q267.3906,48.9375 266.75,49.0781 Q266.1094,49.2344 265.4063,49.2344 Q262.9063,49.2344 261.5781,47.5938 Q260.2656,45.9375 260.2656,42.8125 Q260.2656,39.6875 261.5781,38.0313 Q262.9063,36.375 265.4063,36.375 Q266.1094,36.375 266.75,36.5313 Q267.4063,36.6875 267.9688,36.9844 L267.9688,39.7031 Q267.3438,39.125 266.75,38.8594 Q266.1563,38.5781 265.5313,38.5781 Q264.1875,38.5781 263.5,39.6563 Q262.8125,40.7188 262.8125,42.8125 Q262.8125,44.9063 263.5,45.9844 Q264.1875,47.0469 265.5313,47.0469 Q266.1563,47.0469 266.75,46.7813 Q267.3438,46.5 267.9688,45.9219 L267.9688,48.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="64" x="279" y="47.1543">A::AA::AAA</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="251" x2="345" y1="59" y2="59"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="251" x2="345" y1="67" y2="67"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L33" target="_top" title="C##B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L33" xlink:show="new" xlink:title="C##B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="48" id="C_0000287819369330075965" style="stroke: #A80036; stroke-width: 1.5;" width="76" x="418" y="27"/>
<ellipse cx="433" cy="43" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M435.9688,48.6406 Q435.3906,48.9375 434.75,49.0781 Q434.1094,49.2344 433.4063,49.2344 Q430.9063,49.2344 429.5781,47.5938 Q428.2656,45.9375 428.2656,42.8125 Q428.2656,39.6875 429.5781,38.0313 Q430.9063,36.375 433.4063,36.375 Q434.1094,36.375 434.75,36.5313 Q435.4063,36.6875 435.9688,36.9844 L435.9688,39.7031 Q435.3438,39.125 434.75,38.8594 Q434.1563,38.5781 433.5313,38.5781 Q432.1875,38.5781 431.5,39.6563 Q430.8125,40.7188 430.8125,42.8125 Q430.8125,44.9063 431.5,45.9844 Q432.1875,47.0469 433.5313,47.0469 Q434.1563,47.0469 434.75,46.7813 Q435.3438,46.5 435.9688,45.9219 L435.9688,48.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="24" x="447" y="47.1543">C::B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="18" x="479" y="24"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="16" x="480" y="36.1387">int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="419" x2="493" y1="59" y2="59"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="419" x2="493" y1="67" y2="67"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L23" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L23" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="73.6094" id="C_0002278328177727440136" style="stroke: #A80036; stroke-width: 1.5;" width="105" x="490.5" y="290"/>
<ellipse cx="529.8" cy="306" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M532.7688,311.6406 Q532.1906,311.9375 531.55,312.0781 Q530.9094,312.2344 530.2063,312.2344 Q527.7063,312.2344 526.3781,310.5938 Q525.0656,308.9375 525.0656,305.8125 Q525.0656,302.6875 526.3781,301.0313 Q527.7063,299.375 530.2063,299.375 Q530.9094,299.375 531.55,299.5313 Q532.2063,299.6875 532.7688,299.9844 L532.7688,302.7031 Q532.1438,302.125 531.55,301.8594 Q530.9563,301.5781 530.3313,301.5781 Q528.9875,301.5781 528.3,302.6563 Q527.6125,303.7188 527.6125,305.8125 Q527.6125,307.9063 528.3,308.9844 Q528.9875,310.0469 530.3313,310.0469 Q530.9563,310.0469 531.55,309.7813 Q532.1438,309.5 532.7688,308.9219 L532.7688,311.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="549.2" y="310.1543">C</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="589.5" y="287"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="590.5" y="299.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="491.5" x2="594.5" y1="322" y2="322"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="491.5" x2="594.5" y1="330" y2="330"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L37" target="_top" title="b_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L37" xlink:show="new" xlink:title="b_int" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="496.5" y="336"/>
<ellipse cx="501.5" cy="341" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L37" target="_top" title="b_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L37" xlink:show="new" xlink:title="b_int" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="79" x="510.5" y="344.2104">b_int : B&lt;int&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L25" target="_top" title="t" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L25" xlink:show="new" xlink:title="t" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="496.5" y="348.8047"/>
<ellipse cx="501.5" cy="353.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L25" target="_top" title="t" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L25" xlink:show="new" xlink:title="t" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="23" x="510.5" y="357.0151">t : T</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L27" target="_top" title="C##AA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L27" xlink:show="new" xlink:title="C##AA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="48" id="C_0000623940132897927654" style="stroke: #A80036; stroke-width: 1.5;" width="64" x="584" y="168"/>
<ellipse cx="599" cy="184" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M601.9688,189.6406 Q601.3906,189.9375 600.75,190.0781 Q600.1094,190.2344 599.4063,190.2344 Q596.9063,190.2344 595.5781,188.5938 Q594.2656,186.9375 594.2656,183.8125 Q594.2656,180.6875 595.5781,179.0313 Q596.9063,177.375 599.4063,177.375 Q600.1094,177.375 600.75,177.5313 Q601.4063,177.6875 601.9688,177.9844 L601.9688,180.7031 Q601.3438,180.125 600.75,179.8594 Q600.1563,179.5781 599.5313,179.5781 Q598.1875,179.5781 597.5,180.6563 Q596.8125,181.7188 596.8125,183.8125 Q596.8125,185.9063 597.5,186.9844 Q598.1875,188.0469 599.5313,188.0469 Q600.1563,188.0469 600.75,187.7813 Q601.3438,187.5 601.9688,186.9219 L601.9688,189.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="32" x="613" y="188.1543">C::AA</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="585" x2="647" y1="200" y2="200"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="585" x2="647" y1="208" y2="208"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L28" target="_top" title="C##AA##AAA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L28" xlink:show="new" xlink:title="C##AA##AAA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="48" id="C_0001597801087286500866" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="545" y="27"/>
<ellipse cx="560" cy="43" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M562.9688,48.6406 Q562.3906,48.9375 561.75,49.0781 Q561.1094,49.2344 560.4063,49.2344 Q557.9063,49.2344 556.5781,47.5938 Q555.2656,45.9375 555.2656,42.8125 Q555.2656,39.6875 556.5781,38.0313 Q557.9063,36.375 560.4063,36.375 Q561.1094,36.375 561.75,36.5313 Q562.4063,36.6875 562.9688,36.9844 L562.9688,39.7031 Q562.3438,39.125 561.75,38.8594 Q561.1563,38.5781 560.5313,38.5781 Q559.1875,38.5781 558.5,39.6563 Q557.8125,40.7188 557.8125,42.8125 Q557.8125,44.9063 558.5,45.9844 Q559.1875,47.0469 560.5313,47.0469 Q561.1563,47.0469 561.75,46.7813 Q562.3438,46.5 562.9688,45.9219 L562.9688,48.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="64" x="574" y="47.1543">C::AA::AAA</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="546" x2="640" y1="59" y2="59"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="546" x2="640" y1="67" y2="67"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L30" target="_top" title="C##AA##CCC" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L30" xlink:show="new" xlink:title="C##AA##CCC" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="73.6094" id="C_0000081819202639599734" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="676" y="14"/>
<ellipse cx="691" cy="30" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M695.1094,36 L687.3906,36 L687.3906,23.6094 L695.1094,23.6094 L695.1094,25.7656 L689.8438,25.7656 L689.8438,28.4375 L694.6094,28.4375 L694.6094,30.5938 L689.8438,30.5938 L689.8438,33.8438 L695.1094,33.8438 L695.1094,36 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="64" x="705" y="34.1543">C::AA::CCC</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="677" x2="771" y1="46" y2="46"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="37" x="682" y="60.2104">CCC_1</text>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="37" x="682" y="73.0151">CCC_2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="677" x2="771" y1="79.6094" y2="79.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L33" target="_top" title="C##B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L33" xlink:show="new" xlink:title="C##B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="60.8047" id="C_0001381298335849583950" style="stroke: #A80036; stroke-width: 1.5;" width="68" x="366" y="161.5"/>
<ellipse cx="381" cy="177.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M383.9688,183.1406 Q383.3906,183.4375 382.75,183.5781 Q382.1094,183.7344 381.4063,183.7344 Q378.9063,183.7344 377.5781,182.0938 Q376.2656,180.4375 376.2656,177.3125 Q376.2656,174.1875 377.5781,172.5313 Q378.9063,170.875 381.4063,170.875 Q382.1094,170.875 382.75,171.0313 Q383.4063,171.1875 383.9688,171.4844 L383.9688,174.2031 Q383.3438,173.625 382.75,173.3594 Q382.1563,173.0781 381.5313,173.0781 Q380.1875,173.0781 379.5,174.1563 Q378.8125,175.2188 378.8125,177.3125 Q378.8125,179.4063 379.5,180.4844 Q380.1875,181.5469 381.5313,181.5469 Q382.1563,181.5469 382.75,181.2813 Q383.3438,181 383.9688,180.4219 L383.9688,183.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="24" x="395" y="181.6543">C::B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="10" x="427" y="158.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="8" x="428" y="170.6387">V</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="367" x2="433" y1="193.5" y2="193.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="367" x2="433" y1="201.5" y2="201.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L34" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L34" xlink:show="new" xlink:title="b" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="372" y="207.5"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="374" y="209.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L34" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L34" xlink:show="new" xlink:title="b" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="26" x="386" y="215.7104">b : V</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L39" target="_top" title="C##CC" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L39" xlink:show="new" xlink:title="C##CC" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="73.6094" id="C_0002037378936100378699" style="stroke: #A80036; stroke-width: 1.5;" width="64" x="683" y="155"/>
<ellipse cx="698" cy="171" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M702.1094,177 L694.3906,177 L694.3906,164.6094 L702.1094,164.6094 L702.1094,166.7656 L696.8438,166.7656 L696.8438,169.4375 L701.6094,169.4375 L701.6094,171.5938 L696.8438,171.5938 L696.8438,174.8438 L702.1094,174.8438 L702.1094,177 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="32" x="712" y="175.1543">C::CC</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="684" x2="746" y1="187" y2="187"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="29" x="689" y="201.2104">CC_1</text>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="29" x="689" y="214.0151">CC_2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="684" x2="746" y1="220.6094" y2="220.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L43" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L43" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="48" id="C_0000612133170877135796" style="stroke: #A80036; stroke-width: 1.5;" width="84" x="891" y="168"/>
<ellipse cx="906" cy="184" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M908.9688,189.6406 Q908.3906,189.9375 907.75,190.0781 Q907.1094,190.2344 906.4063,190.2344 Q903.9063,190.2344 902.5781,188.5938 Q901.2656,186.9375 901.2656,183.8125 Q901.2656,180.6875 902.5781,179.0313 Q903.9063,177.375 906.4063,177.375 Q907.1094,177.375 907.75,177.5313 Q908.4063,177.6875 908.9688,177.9844 L908.9688,180.7031 Q908.3438,180.125 907.75,179.8594 Q907.1563,179.5781 906.5313,179.5781 Q905.1875,179.5781 904.5,180.6563 Q903.8125,181.7188 903.8125,183.8125 Q903.8125,185.9063 904.5,186.9844 Q905.1875,188.0469 906.5313,188.0469 Q907.1563,188.0469 907.75,187.7813 Q908.3438,187.5 908.9688,186.9219 L908.9688,189.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="52" x="920" y="188.1543">detail::D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="892" x2="974" y1="200" y2="200"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="892" x2="974" y1="208" y2="208"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L45" target="_top" title="D##AA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L45" xlink:show="new" xlink:title="D##AA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="86.4141" id="C_0001572080057917630922" style="stroke: #A80036; stroke-width: 1.5;" width="108" x="807" y="8"/>
<ellipse cx="822" cy="24" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M826.1094,30 L818.3906,30 L818.3906,17.6094 L826.1094,17.6094 L826.1094,19.7656 L820.8438,19.7656 L820.8438,22.4375 L825.6094,22.4375 L825.6094,24.5938 L820.8438,24.5938 L820.8438,27.8438 L826.1094,27.8438 L826.1094,30 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="836" y="28.1543">detail::D::AA</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="808" x2="914" y1="40" y2="40"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="27" x="813" y="54.2104">AA_1</text>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="27" x="813" y="67.0151">AA_2</text>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="27" x="813" y="79.8198">AA_3</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="808" x2="914" y1="86.4141" y2="86.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L47" target="_top" title="D##DD" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00004/t00004.cc#L47" xlink:show="new" xlink:title="D##DD" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fms86jxittqx4)" height="48" id="C_0000600916232677555492" style="stroke: #A80036; stroke-width: 1.5;" width="110" x="950" y="27"/>
<ellipse cx="965" cy="43" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M967.9688,48.6406 Q967.3906,48.9375 966.75,49.0781 Q966.1094,49.2344 965.4063,49.2344 Q962.9063,49.2344 961.5781,47.5938 Q960.2656,45.9375 960.2656,42.8125 Q960.2656,39.6875 961.5781,38.0313 Q962.9063,36.375 965.4063,36.375 Q966.1094,36.375 966.75,36.5313 Q967.4063,36.6875 967.9688,36.9844 L967.9688,39.7031 Q967.3438,39.125 966.75,38.8594 Q966.1563,38.5781 965.5313,38.5781 Q964.1875,38.5781 963.5,39.6563 Q962.8125,40.7188 962.8125,42.8125 Q962.8125,44.9063 963.5,45.9844 Q964.1875,47.0469 965.5313,47.0469 Q966.1563,47.0469 966.75,46.7813 Q967.3438,46.5 967.9688,45.9219 L967.9688,48.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="78" x="979" y="47.1543">detail::D::DD</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="951" x2="1059" y1="59" y2="59"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="951" x2="1059" y1="67" y2="67"/>
</a>
<path d="M38,94.08 C38,112.65 38,134.33 38,152.47 " fill="none" id="C_0001630205507215126623-&gt;C_0001232624428734051711" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="38" cy="159.64" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="38" x2="38" y1="151.64" y2="167.64"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="46" x2="30" y1="159.64" y2="159.64"/>
<path d="M241,216.17 C241,232.28 241,254.4 241,274.57 " fill="none" id="C_0001742499843727859552-&gt;C_0001552274940876611774" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="241" cy="281.83" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="241" x2="241" y1="273.83" y2="289.83"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="249" x2="233" y1="281.83" y2="281.83"/>
<path d="M184.52,94.08 C195.78,113.41 209.01,136.1 219.83,154.66 " fill="none" id="C_0000590936874508841244-&gt;C_0001742499843727859552" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="223.3652" cy="160.7262" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="219.3404" x2="227.39" y1="153.8124" y2="167.64"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="230.279" x2="216.4514" y1="156.7014" y2="164.751"/>
<path d="M288.46,75.27 C279.7,96.61 266.58,128.62 256.35,153.56 " fill="none" id="C_0001430186633004282131-&gt;C_0001742499843727859552" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="253.6041" cy="160.2577" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="256.6382" x2="250.57" y1="152.8554" y2="167.66"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="261.0064" x2="246.2018" y1="163.2918" y2="157.2236"/>
<path d="M446.63,75.27 C439.26,93.56 428.74,119.67 419.56,142.46 " fill="none" id="C_0000287819369330075965-&gt;C_0001381298335849583950" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="425.91,145.42,411.94,161.36,412.92,140.19,425.91,145.42" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M527.6,277.5 C508.75,218.12 477.58,119.97 463.42,75.36 " fill="none" id="C_0002278328177727440136&lt;-C_0000287819369330075965" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="531.54,289.91,533.5388,282.9814,527.9119,278.4716,525.9132,285.4002,531.54,289.91" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="519" cy="192.5664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="31" x="526" y="196.5669">b_int</text>
<path d="M603.28,216.17 C594.14,232.83 581.46,255.93 570.09,276.65 " fill="none" id="C_0000623940132897927654-&gt;C_0002278328177727440136" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="566.6995" cy="282.8171" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="570.549" x2="562.85" y1="275.8041" y2="289.83"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="573.7124" x2="559.6866" y1="286.6666" y2="278.9676"/>
<path d="M596.85,75.27 C600.35,96.41 605.58,128.02 609.69,152.86 " fill="none" id="C_0001597801087286500866-&gt;C_0000623940132897927654" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="610.8297" cy="159.768" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="609.5195" x2="612.14" y1="151.8761" y2="167.66"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="618.7217" x2="602.9378" y1="158.4578" y2="161.0783"/>
<path d="M695.91,88.16 C679.76,108.94 659.56,134.94 643.51,155.59 " fill="none" id="C_0000081819202639599734-&gt;C_0000623940132897927654" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="639.0389" cy="161.3531" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="643.9478" x2="634.13" y1="155.0363" y2="167.67"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="645.3558" x2="632.722" y1="166.262" y2="156.4442"/>
<path d="M431.74,222.52 C449.79,239.31 472.8,260.71 493.2,279.68 " fill="none" id="C_0001381298335849583950-&gt;C_0002278328177727440136" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="498.3612" cy="284.4826" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="492.5024" x2="504.22" y1="279.0352" y2="289.93"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="503.8086" x2="492.9138" y1="278.6238" y2="290.3414"/>
<path d="M682.65,218.02 C659.95,235.57 628.94,259.54 601.92,280.44 " fill="none" id="C_0002037378936100378699-&gt;C_0002278328177727440136" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="596.1479" cy="284.9054" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="602.4759" x2="589.82" y1="280.0108" y2="289.8"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="601.0425" x2="591.2533" y1="291.2333" y2="278.5775"/>
<path d="M882.8,94.08 C892.71,113.22 904.33,135.65 913.9,154.12 " fill="none" id="C_0001572080057917630922-&gt;C_0000612133170877135796" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="917.219" cy="160.5372" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="913.538" x2="920.9" y1="153.4343" y2="167.64"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="924.3219" x2="910.1162" y1="156.8562" y2="164.2181"/>
<path d="M992.95,75.27 C981.79,96.81 965,129.22 952.03,154.26 " fill="none" id="C_0000600916232677555492-&gt;C_0000612133170877135796" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="948.771" cy="160.5572" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="952.452" x2="945.09" y1="153.4543" y2="167.66"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="955.8738" x2="941.6681" y1="164.2381" y2="156.8762"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 39 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 41 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="384px" preserveAspectRatio="none" style="width:799px;height:384px;" version="1.1" viewBox="0 0 799 384" width="799px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1cd7uqcbdo72q" width="300%" x="-1" y="-1">
<filter height="300%" id="f1gkm7fsao1sg5" width="300%" x="-1" y="-1">
<feGaussianBlur result="blurOut" stdDeviation="2.0"/>
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
@@ -9,238 +9,238 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L3" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L3" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1cd7uqcbdo72q)" height="48" id="C_0000000071" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L3" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L3" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gkm7fsao1sg5)" height="48" id="C_0000096355893895780319" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="325"/>
<ellipse cx="21" cy="341" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,346.6406 Q23.3906,346.9375 22.75,347.0781 Q22.1094,347.2344 21.4063,347.2344 Q18.9063,347.2344 17.5781,345.5938 Q16.2656,343.9375 16.2656,340.8125 Q16.2656,337.6875 17.5781,336.0313 Q18.9063,334.375 21.4063,334.375 Q22.1094,334.375 22.75,334.5313 Q23.4063,334.6875 23.9688,334.9844 L23.9688,337.7031 Q23.3438,337.125 22.75,336.8594 Q22.1563,336.5781 21.5313,336.5781 Q20.1875,336.5781 19.5,337.6563 Q18.8125,338.7188 18.8125,340.8125 Q18.8125,342.9063 19.5,343.9844 Q20.1875,345.0469 21.5313,345.0469 Q22.1563,345.0469 22.75,344.7813 Q23.3438,344.5 23.9688,343.9219 L23.9688,346.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="35" y="345.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="45" y1="357" y2="357"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="45" y1="365" y2="365"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L6" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L6" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1cd7uqcbdo72q)" height="48" id="C_0000000075" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="81" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L5" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L5" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gkm7fsao1sg5)" height="48" id="C_0001909425857334087541" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="81" y="325"/>
<ellipse cx="96" cy="341" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M98.9688,346.6406 Q98.3906,346.9375 97.75,347.0781 Q97.1094,347.2344 96.4063,347.2344 Q93.9063,347.2344 92.5781,345.5938 Q91.2656,343.9375 91.2656,340.8125 Q91.2656,337.6875 92.5781,336.0313 Q93.9063,334.375 96.4063,334.375 Q97.1094,334.375 97.75,334.5313 Q98.4063,334.6875 98.9688,334.9844 L98.9688,337.7031 Q98.3438,337.125 97.75,336.8594 Q97.1563,336.5781 96.5313,336.5781 Q95.1875,336.5781 94.5,337.6563 Q93.8125,338.7188 93.8125,340.8125 Q93.8125,342.9063 94.5,343.9844 Q95.1875,345.0469 96.5313,345.0469 Q97.1563,345.0469 97.75,344.7813 Q98.3438,344.5 98.9688,343.9219 L98.9688,346.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="110" y="345.1543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="82" x2="120" y1="357" y2="357"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="82" x2="120" y1="365" y2="365"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L9" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L9" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1cd7uqcbdo72q)" height="48" id="C_0000000079" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="156" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L7" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L7" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gkm7fsao1sg5)" height="48" id="C_0000968176384460064907" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="156" y="325"/>
<ellipse cx="171" cy="341" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M173.9688,346.6406 Q173.3906,346.9375 172.75,347.0781 Q172.1094,347.2344 171.4063,347.2344 Q168.9063,347.2344 167.5781,345.5938 Q166.2656,343.9375 166.2656,340.8125 Q166.2656,337.6875 167.5781,336.0313 Q168.9063,334.375 171.4063,334.375 Q172.1094,334.375 172.75,334.5313 Q173.4063,334.6875 173.9688,334.9844 L173.9688,337.7031 Q173.3438,337.125 172.75,336.8594 Q172.1563,336.5781 171.5313,336.5781 Q170.1875,336.5781 169.5,337.6563 Q168.8125,338.7188 168.8125,340.8125 Q168.8125,342.9063 169.5,343.9844 Q170.1875,345.0469 171.5313,345.0469 Q172.1563,345.0469 172.75,344.7813 Q173.3438,344.5 173.9688,343.9219 L173.9688,346.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="185" y="345.1543">C</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="157" x2="195" y1="357" y2="357"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="157" x2="195" y1="365" y2="365"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L12" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L12" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1cd7uqcbdo72q)" height="48" id="C_0000000083" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="231.5" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L9" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L9" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gkm7fsao1sg5)" height="48" id="C_0001735599590836186693" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="231.5" y="325"/>
<ellipse cx="246.5" cy="341" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M249.4688,346.6406 Q248.8906,346.9375 248.25,347.0781 Q247.6094,347.2344 246.9063,347.2344 Q244.4063,347.2344 243.0781,345.5938 Q241.7656,343.9375 241.7656,340.8125 Q241.7656,337.6875 243.0781,336.0313 Q244.4063,334.375 246.9063,334.375 Q247.6094,334.375 248.25,334.5313 Q248.9063,334.6875 249.4688,334.9844 L249.4688,337.7031 Q248.8438,337.125 248.25,336.8594 Q247.6563,336.5781 247.0313,336.5781 Q245.6875,336.5781 245,337.6563 Q244.3125,338.7188 244.3125,340.8125 Q244.3125,342.9063 245,343.9844 Q245.6875,345.0469 247.0313,345.0469 Q247.6563,345.0469 248.25,344.7813 Q248.8438,344.5 249.4688,343.9219 L249.4688,346.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="260.5" y="345.1543">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="232.5" x2="271.5" y1="357" y2="357"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="232.5" x2="271.5" y1="365" y2="365"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L15" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L15" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1cd7uqcbdo72q)" height="48" id="C_0000000087" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="308" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L11" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L11" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gkm7fsao1sg5)" height="48" id="C_0000887960136921844658" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="308" y="325"/>
<ellipse cx="323" cy="341" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M325.9688,346.6406 Q325.3906,346.9375 324.75,347.0781 Q324.1094,347.2344 323.4063,347.2344 Q320.9063,347.2344 319.5781,345.5938 Q318.2656,343.9375 318.2656,340.8125 Q318.2656,337.6875 319.5781,336.0313 Q320.9063,334.375 323.4063,334.375 Q324.1094,334.375 324.75,334.5313 Q325.4063,334.6875 325.9688,334.9844 L325.9688,337.7031 Q325.3438,337.125 324.75,336.8594 Q324.1563,336.5781 323.5313,336.5781 Q322.1875,336.5781 321.5,337.6563 Q320.8125,338.7188 320.8125,340.8125 Q320.8125,342.9063 321.5,343.9844 Q322.1875,345.0469 323.5313,345.0469 Q324.1563,345.0469 324.75,344.7813 Q325.3438,344.5 325.9688,343.9219 L325.9688,346.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="337" y="345.1543">E</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="309" x2="347" y1="357" y2="357"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="309" x2="347" y1="365" y2="365"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L18" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L18" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1cd7uqcbdo72q)" height="48" id="C_0000000091" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="383.5" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L13" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L13" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gkm7fsao1sg5)" height="48" id="C_0000772719357856231772" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="383.5" y="325"/>
<ellipse cx="398.5" cy="341" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M401.4688,346.6406 Q400.8906,346.9375 400.25,347.0781 Q399.6094,347.2344 398.9063,347.2344 Q396.4063,347.2344 395.0781,345.5938 Q393.7656,343.9375 393.7656,340.8125 Q393.7656,337.6875 395.0781,336.0313 Q396.4063,334.375 398.9063,334.375 Q399.6094,334.375 400.25,334.5313 Q400.9063,334.6875 401.4688,334.9844 L401.4688,337.7031 Q400.8438,337.125 400.25,336.8594 Q399.6563,336.5781 399.0313,336.5781 Q397.6875,336.5781 397,337.6563 Q396.3125,338.7188 396.3125,340.8125 Q396.3125,342.9063 397,343.9844 Q397.6875,345.0469 399.0313,345.0469 Q399.6563,345.0469 400.25,344.7813 Q400.8438,344.5 401.4688,343.9219 L401.4688,346.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="7" x="412.5" y="345.1543">F</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="384.5" x2="421.5" y1="357" y2="357"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="384.5" x2="421.5" y1="365" y2="365"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L21" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L21" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1cd7uqcbdo72q)" height="48" id="C_0000000095" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="457.5" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L15" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L15" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gkm7fsao1sg5)" height="48" id="C_0000979147885884736437" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="457.5" y="325"/>
<ellipse cx="472.5" cy="341" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M475.4688,346.6406 Q474.8906,346.9375 474.25,347.0781 Q473.6094,347.2344 472.9063,347.2344 Q470.4063,347.2344 469.0781,345.5938 Q467.7656,343.9375 467.7656,340.8125 Q467.7656,337.6875 469.0781,336.0313 Q470.4063,334.375 472.9063,334.375 Q473.6094,334.375 474.25,334.5313 Q474.9063,334.6875 475.4688,334.9844 L475.4688,337.7031 Q474.8438,337.125 474.25,336.8594 Q473.6563,336.5781 473.0313,336.5781 Q471.6875,336.5781 471,337.6563 Q470.3125,338.7188 470.3125,340.8125 Q470.3125,342.9063 471,343.9844 Q471.6875,345.0469 473.0313,345.0469 Q473.6563,345.0469 474.25,344.7813 Q474.8438,344.5 475.4688,343.9219 L475.4688,346.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="486.5" y="345.1543">G</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="458.5" x2="497.5" y1="357" y2="357"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="458.5" x2="497.5" y1="365" y2="365"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L24" target="_top" title="H" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L24" xlink:show="new" xlink:title="H" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1cd7uqcbdo72q)" height="48" id="C_0000000099" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="533.5" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L17" target="_top" title="H" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L17" xlink:show="new" xlink:title="H" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gkm7fsao1sg5)" height="48" id="C_0001440673301054236675" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="533.5" y="325"/>
<ellipse cx="548.5" cy="341" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M551.4688,346.6406 Q550.8906,346.9375 550.25,347.0781 Q549.6094,347.2344 548.9063,347.2344 Q546.4063,347.2344 545.0781,345.5938 Q543.7656,343.9375 543.7656,340.8125 Q543.7656,337.6875 545.0781,336.0313 Q546.4063,334.375 548.9063,334.375 Q549.6094,334.375 550.25,334.5313 Q550.9063,334.6875 551.4688,334.9844 L551.4688,337.7031 Q550.8438,337.125 550.25,336.8594 Q549.6563,336.5781 549.0313,336.5781 Q547.6875,336.5781 547,337.6563 Q546.3125,338.7188 546.3125,340.8125 Q546.3125,342.9063 547,343.9844 Q547.6875,345.0469 549.0313,345.0469 Q549.6563,345.0469 550.25,344.7813 Q550.8438,344.5 551.4688,343.9219 L551.4688,346.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="562.5" y="345.1543">H</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="534.5" x2="573.5" y1="357" y2="357"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="534.5" x2="573.5" y1="365" y2="365"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L27" target="_top" title="I" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L27" xlink:show="new" xlink:title="I" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1cd7uqcbdo72q)" height="48" id="C_0000000103" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="609.5" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L19" target="_top" title="I" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L19" xlink:show="new" xlink:title="I" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gkm7fsao1sg5)" height="48" id="C_0000109681731550086430" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="609.5" y="325"/>
<ellipse cx="624.5" cy="341" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M627.4688,346.6406 Q626.8906,346.9375 626.25,347.0781 Q625.6094,347.2344 624.9063,347.2344 Q622.4063,347.2344 621.0781,345.5938 Q619.7656,343.9375 619.7656,340.8125 Q619.7656,337.6875 621.0781,336.0313 Q622.4063,334.375 624.9063,334.375 Q625.6094,334.375 626.25,334.5313 Q626.9063,334.6875 627.4688,334.9844 L627.4688,337.7031 Q626.8438,337.125 626.25,336.8594 Q625.6563,336.5781 625.0313,336.5781 Q623.6875,336.5781 623,337.6563 Q622.3125,338.7188 622.3125,340.8125 Q622.3125,342.9063 623,343.9844 Q623.6875,345.0469 625.0313,345.0469 Q625.6563,345.0469 626.25,344.7813 Q626.8438,344.5 627.4688,343.9219 L627.4688,346.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="3" x="638.5" y="345.1543">I</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="610.5" x2="643.5" y1="357" y2="357"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="610.5" x2="643.5" y1="365" y2="365"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L30" target="_top" title="J" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L30" xlink:show="new" xlink:title="J" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1cd7uqcbdo72q)" height="48" id="C_0000000107" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="679.5" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L21" target="_top" title="J" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L21" xlink:show="new" xlink:title="J" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gkm7fsao1sg5)" height="48" id="C_0000338330011969650325" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="679.5" y="325"/>
<ellipse cx="694.5" cy="341" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M697.4688,346.6406 Q696.8906,346.9375 696.25,347.0781 Q695.6094,347.2344 694.9063,347.2344 Q692.4063,347.2344 691.0781,345.5938 Q689.7656,343.9375 689.7656,340.8125 Q689.7656,337.6875 691.0781,336.0313 Q692.4063,334.375 694.9063,334.375 Q695.6094,334.375 696.25,334.5313 Q696.9063,334.6875 697.4688,334.9844 L697.4688,337.7031 Q696.8438,337.125 696.25,336.8594 Q695.6563,336.5781 695.0313,336.5781 Q693.6875,336.5781 693,337.6563 Q692.3125,338.7188 692.3125,340.8125 Q692.3125,342.9063 693,343.9844 Q693.6875,345.0469 695.0313,345.0469 Q695.6563,345.0469 696.25,344.7813 Q696.8438,344.5 697.4688,343.9219 L697.4688,346.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="3" x="708.5" y="345.1543">J</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="680.5" x2="713.5" y1="357" y2="357"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="680.5" x2="713.5" y1="365" y2="365"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L33" target="_top" title="K" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L33" xlink:show="new" xlink:title="K" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1cd7uqcbdo72q)" height="48" id="C_0000000111" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="749.5" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L23" target="_top" title="K" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L23" xlink:show="new" xlink:title="K" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gkm7fsao1sg5)" height="48" id="C_0002179119389830432509" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="749.5" y="325"/>
<ellipse cx="764.5" cy="341" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M767.4688,346.6406 Q766.8906,346.9375 766.25,347.0781 Q765.6094,347.2344 764.9063,347.2344 Q762.4063,347.2344 761.0781,345.5938 Q759.7656,343.9375 759.7656,340.8125 Q759.7656,337.6875 761.0781,336.0313 Q762.4063,334.375 764.9063,334.375 Q765.6094,334.375 766.25,334.5313 Q766.9063,334.6875 767.4688,334.9844 L767.4688,337.7031 Q766.8438,337.125 766.25,336.8594 Q765.6563,336.5781 765.0313,336.5781 Q763.6875,336.5781 763,337.6563 Q762.3125,338.7188 762.3125,340.8125 Q762.3125,342.9063 763,343.9844 Q763.6875,345.0469 765.0313,345.0469 Q765.6563,345.0469 766.25,344.7813 Q766.8438,344.5 767.4688,343.9219 L767.4688,346.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="7" x="778.5" y="345.1543">K</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="750.5" x2="787.5" y1="357" y2="357"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="750.5" x2="787.5" y1="365" y2="365"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L36" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L36" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1cd7uqcbdo72q)" height="240.0703" id="C_0000000115" style="stroke: #A80036; stroke-width: 1.5;" width="208" x="299" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L25" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L25" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gkm7fsao1sg5)" height="240.0703" id="C_0000630692407373144211" style="stroke: #A80036; stroke-width: 1.5;" width="212" x="297" y="8"/>
<ellipse cx="394.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M397.7188,29.6406 Q397.1406,29.9375 396.5,30.0781 Q395.8594,30.2344 395.1563,30.2344 Q392.6563,30.2344 391.3281,28.5938 Q390.0156,26.9375 390.0156,23.8125 Q390.0156,20.6875 391.3281,19.0313 Q392.6563,17.375 395.1563,17.375 Q395.8594,17.375 396.5,17.5313 Q397.1563,17.6875 397.7188,17.9844 L397.7188,20.7031 Q397.0938,20.125 396.5,19.8594 Q395.9063,19.5781 395.2813,19.5781 Q393.9375,19.5781 393.25,20.6563 Q392.5625,21.7188 392.5625,23.8125 Q392.5625,25.9063 393.25,26.9844 Q393.9375,28.0469 395.2813,28.0469 Q395.9063,28.0469 396.5,27.7813 Q397.0938,27.5 397.7188,26.9219 L397.7188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="415.25" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="300" x2="506" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="298" x2="508" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="298" x2="508" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L38" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L38" xlink:show="new" xlink:title="some_int" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="305" y="46"/>
<ellipse cx="310" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L31" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L31" xlink:show="new" xlink:title="a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="303" y="54"/>
<ellipse cx="308" cy="59" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L38" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L38" xlink:show="new" xlink:title="some_int" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="78" x="319" y="54.2104">some_int : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L31" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L31" xlink:show="new" xlink:title="a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="26" x="317" y="62.2104">a : A</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L39" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L39" xlink:show="new" xlink:title="some_int_pointer" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="305" y="58.8047"/>
<ellipse cx="310" cy="63.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L32" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L32" xlink:show="new" xlink:title="b" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="303" y="66.8047"/>
<ellipse cx="308" cy="71.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L39" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L39" xlink:show="new" xlink:title="some_int_pointer" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="130" x="319" y="67.0151">some_int_pointer : int*</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L32" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L32" xlink:show="new" xlink:title="b" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="37" x="317" y="75.0151">b : B *</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L40" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L40" xlink:show="new" xlink:title="some_int_pointer_pointer" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="305" y="71.6094"/>
<ellipse cx="310" cy="76.6094" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L33" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L33" xlink:show="new" xlink:title="c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="303" y="79.6094"/>
<ellipse cx="308" cy="84.6094" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L40" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L40" xlink:show="new" xlink:title="some_int_pointer_pointer" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="182" x="319" y="79.8198">some_int_pointer_pointer : int**</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L33" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L33" xlink:show="new" xlink:title="c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="40" x="317" y="87.8198">c : C &amp;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L41" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L41" xlink:show="new" xlink:title="some_int_reference" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="305" y="84.4141"/>
<ellipse cx="310" cy="89.4141" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L34" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L34" xlink:show="new" xlink:title="d" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="303" y="92.4141"/>
<ellipse cx="308" cy="97.4141" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L41" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L41" xlink:show="new" xlink:title="some_int_reference" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="149" x="319" y="92.6245">some_int_reference : int&amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L34" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L34" xlink:show="new" xlink:title="d" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="72" x="317" y="100.6245">d : const D *</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L42" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L42" xlink:show="new" xlink:title="a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="305" y="97.2188"/>
<ellipse cx="310" cy="102.2188" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L35" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L35" xlink:show="new" xlink:title="e" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="303" y="105.2188"/>
<ellipse cx="308" cy="110.2188" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L42" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L42" xlink:show="new" xlink:title="a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="26" x="319" y="105.4292">a : A</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L35" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L35" xlink:show="new" xlink:title="e" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="75" x="317" y="113.4292">e : const E &amp;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L43" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L43" xlink:show="new" xlink:title="b" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="305" y="110.0234"/>
<ellipse cx="310" cy="115.0234" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L36" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L36" xlink:show="new" xlink:title="f" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="303" y="118.0234"/>
<ellipse cx="308" cy="123.0234" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L43" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L43" xlink:show="new" xlink:title="b" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="319" y="118.2339">b : B*</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L36" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L36" xlink:show="new" xlink:title="f" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="46" x="317" y="126.2339">f : F &amp;&amp;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L44" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L44" xlink:show="new" xlink:title="c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="305" y="122.8281"/>
<ellipse cx="310" cy="127.8281" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L37" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L37" xlink:show="new" xlink:title="g" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="303" y="130.8281"/>
<ellipse cx="308" cy="135.8281" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L44" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L44" xlink:show="new" xlink:title="c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="36" x="319" y="131.0386">c : C&amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L37" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L37" xlink:show="new" xlink:title="g" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="44" x="317" y="139.0386">g : G **</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L45" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L45" xlink:show="new" xlink:title="d" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="305" y="135.6328"/>
<ellipse cx="310" cy="140.6328" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L38" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L38" xlink:show="new" xlink:title="h" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="303" y="143.6328"/>
<ellipse cx="308" cy="148.6328" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L45" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L45" xlink:show="new" xlink:title="d" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="68" x="319" y="143.8433">d : D const*</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L38" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L38" xlink:show="new" xlink:title="h" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="317" y="151.8433">h : H ***</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L46" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L46" xlink:show="new" xlink:title="e" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="305" y="148.4375"/>
<ellipse cx="310" cy="153.4375" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L39" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L39" xlink:show="new" xlink:title="i" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="303" y="156.4375"/>
<ellipse cx="308" cy="161.4375" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L46" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L46" xlink:show="new" xlink:title="e" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="71" x="319" y="156.6479">e : E const&amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L39" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L39" xlink:show="new" xlink:title="i" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="38" x="317" y="164.6479">i : I *&amp;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L47" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L47" xlink:show="new" xlink:title="f" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="305" y="161.2422"/>
<ellipse cx="310" cy="166.2422" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L40" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L40" xlink:show="new" xlink:title="j" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="303" y="169.2422"/>
<ellipse cx="308" cy="174.2422" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L47" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L47" xlink:show="new" xlink:title="f" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="42" x="319" y="169.4526">f : F&amp;&amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L40" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L40" xlink:show="new" xlink:title="j" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="72" x="317" y="177.4526">j : volatile J *</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L48" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L48" xlink:show="new" xlink:title="g" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="305" y="174.0469"/>
<ellipse cx="310" cy="179.0469" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L41" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L41" xlink:show="new" xlink:title="k" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="303" y="182.0469"/>
<ellipse cx="308" cy="187.0469" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L48" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L48" xlink:show="new" xlink:title="g" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="40" x="319" y="182.2573">g : G**</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L41" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L41" xlink:show="new" xlink:title="k" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="35" x="317" y="190.2573">k : K *</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L49" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L49" xlink:show="new" xlink:title="h" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="305" y="186.8516"/>
<ellipse cx="310" cy="191.8516" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L27" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L27" xlink:show="new" xlink:title="some_int" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="303" y="194.8516"/>
<ellipse cx="308" cy="199.8516" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L49" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L49" xlink:show="new" xlink:title="h" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="45" x="319" y="195.062">h : H***</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L27" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L27" xlink:show="new" xlink:title="some_int" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="78" x="317" y="203.062">some_int : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L50" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L50" xlink:show="new" xlink:title="i" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="305" y="199.6563"/>
<ellipse cx="310" cy="204.6563" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L28" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L28" xlink:show="new" xlink:title="some_int_pointer" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="303" y="207.6563"/>
<ellipse cx="308" cy="212.6563" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L50" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L50" xlink:show="new" xlink:title="i" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="34" x="319" y="207.8667">i : I*&amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L28" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L28" xlink:show="new" xlink:title="some_int_pointer" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="134" x="317" y="215.8667">some_int_pointer : int *</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L51" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L51" xlink:show="new" xlink:title="j" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="305" y="212.4609"/>
<ellipse cx="310" cy="217.4609" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L29" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L29" xlink:show="new" xlink:title="some_int_pointer_pointer" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="303" y="220.4609"/>
<ellipse cx="308" cy="225.4609" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L51" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L51" xlink:show="new" xlink:title="j" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="68" x="319" y="220.6714">j : J volatile*</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L29" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L29" xlink:show="new" xlink:title="some_int_pointer_pointer" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="186" x="317" y="228.6714">some_int_pointer_pointer : int **</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L52" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L52" xlink:show="new" xlink:title="k" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="305" y="225.2656"/>
<ellipse cx="310" cy="230.2656" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L30" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L30" xlink:show="new" xlink:title="some_int_reference" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="303" y="233.2656"/>
<ellipse cx="308" cy="238.2656" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L52" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00005/t00005.cc#L52" xlink:show="new" xlink:title="k" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="31" x="319" y="233.4761">k : K*</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L30" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L30" xlink:show="new" xlink:title="some_int_reference" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="153" x="317" y="241.4761">some_int_reference : int &amp;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="300" x2="506" y1="240.0703" y2="240.0703"/>
<path d="M287.01,194.6 C221.02,232.23 137.03,280.67 63,325 C57.55,328.26 51.69,331.86 46.28,335.22 " fill="none" id="C_0000000115&lt;-C_0000000071" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="298.69,187.94,291.4965,187.437,288.2654,193.8837,295.4589,194.3867,298.69,187.94" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M285.16,195.65 C219.46,233.13 136.34,281.08 63,325 C57.55,328.26 51.69,331.86 46.28,335.22 " fill="none" id="C_0000630692407373144211&lt;-C_0000096355893895780319" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="296.8,189.02,289.6065,188.517,286.3754,194.9637,293.5689,195.4667,296.8,189.02" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="19" x="139" y="291.0669">+a</text>
<path d="M298.65,204.67 C236.55,249.7 162.79,303.19 125.38,330.32 " fill="none" id="C_0000000115-&gt;C_0000000075" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="121,333.5,130.6339,331.4535,125.0474,330.5642,125.9367,324.9777,121,333.5" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M296.95,205.9 C235.22,250.67 162.45,303.44 125.38,330.32 " fill="none" id="C_0000630692407373144211-&gt;C_0001909425857334087541" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="121.04,333.47,130.6752,331.4296,125.0892,330.5368,125.9821,324.9509,121.04,333.47" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="19" x="192" y="291.0669">+b</text>
<path d="M298.8,229.53 C261.85,265.18 223.57,302.1 199.78,325.05 " fill="none" id="C_0000000115-&gt;C_0000000079" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M296.81,231.45 C260.45,266.53 223.08,302.58 199.72,325.12 " fill="none" id="C_0000630692407373144211-&gt;C_0000968176384460064907" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="196.09,328.62,205.3384,325.2338,199.6823,325.1422,199.7739,319.4861,196.09,328.62" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="18" x="245" y="291.0669">+c</text>
<path d="M320.87,248.11 C302.09,275.35 283.87,301.78 270.89,320.61 " fill="none" id="C_0000000115-&gt;C_0000000083" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M320.87,248.11 C302.09,275.35 283.87,301.78 270.89,320.61 " fill="none" id="C_0000630692407373144211-&gt;C_0001735599590836186693" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="268.03,324.75,276.4249,319.5997,270.8626,320.6298,269.8326,315.0675,268.03,324.75" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="19" x="298" y="291.0669">+d</text>
<path d="M362.21,248.11 C353.04,274.89 344.13,300.89 337.71,319.65 " fill="none" id="C_0000000115-&gt;C_0000000087" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M362.21,248.11 C353.04,274.89 344.13,300.89 337.71,319.65 " fill="none" id="C_0000630692407373144211-&gt;C_0000887960136921844658" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="335.96,324.75,342.6532,317.525,337.5754,320.0181,335.0822,314.9403,335.96,324.75" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="19" x="352" y="291.0669">+e</text>
<path d="M403,261.41 C403,285.83 403,308.67 403,324.75 " fill="none" id="C_0000000115&lt;-C_0000000091" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M403,261.41 C403,285.83 403,308.67 403,324.75 " fill="none" id="C_0000630692407373144211&lt;-C_0000772719357856231772" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="403,248.11,399,254.11,403,260.11,407,254.11,403,248.11" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="15" x="404" y="291.0669">+f</text>
<path d="M443.79,248.11 C452.96,274.89 461.87,300.89 468.29,319.65 " fill="none" id="C_0000000115-&gt;C_0000000095" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M443.79,248.11 C452.96,274.89 461.87,300.89 468.29,319.65 " fill="none" id="C_0000630692407373144211-&gt;C_0000979147885884736437" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="470.04,324.75,470.9178,314.9403,468.4246,320.0181,463.3468,317.525,470.04,324.75" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="19" x="459" y="291.0669">+g</text>
<path d="M485.13,248.11 C503.91,275.35 522.13,301.78 535.11,320.61 " fill="none" id="C_0000000115-&gt;C_0000000099" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M485.13,248.11 C503.91,275.35 522.13,301.78 535.11,320.61 " fill="none" id="C_0000630692407373144211-&gt;C_0001440673301054236675" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="537.97,324.75,536.1674,315.0675,535.1374,320.6298,529.5751,319.5997,537.97,324.75" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="19" x="515" y="291.0669">+h</text>
<path d="M507.13,230.81 C544.28,267.13 582.6,304.59 605.61,327.09 " fill="none" id="C_0000000115-&gt;C_0000000103" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="609.45,330.84,605.8031,321.6912,605.8718,327.3477,600.2154,327.4164,609.45,330.84" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M509.1,232.73 C545.65,268.47 583.05,305.04 605.66,327.13 " fill="none" id="C_0000630692407373144211-&gt;C_0000109681731550086430" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="609.43,330.82,605.7835,321.671,605.852,327.3275,600.1955,327.3959,609.43,330.82" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="14" x="568" y="291.0669">+i</text>
<path d="M507.07,206.52 C568.18,252.04 640.14,305.65 675.37,331.89 " fill="none" id="C_0000000115-&gt;C_0000000107" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="679.48,334.95,674.6603,326.361,675.4731,331.9592,669.875,332.772,679.48,334.95" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M509.14,208.06 C569.83,253.27 640.62,306 675.43,331.93 " fill="none" id="C_0000630692407373144211-&gt;C_0000338330011969650325" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="679.49,334.96,674.69,326.36,675.49,331.96,669.89,332.76,679.49,334.96" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="14" x="620" y="291.0669">+j</text>
<path d="M507.02,190.29 C571.9,228.69 657.03,279.37 732,325 C736.26,327.6 740.79,330.38 745.16,333.09 " fill="none" id="C_0000000115-&gt;C_0000000111" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M509.24,191.61 C573.84,229.84 657.88,279.89 732,325 C736.26,327.6 740.79,330.38 745.16,333.09 " fill="none" id="C_0000630692407373144211-&gt;C_0002179119389830432509" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="749.46,335.76,743.9036,327.6282,745.2056,333.1331,739.7007,334.4352,749.46,335.76" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="18" x="680" y="291.0669">+k</text>
</g>

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

@@ -0,0 +1,495 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" aria-roledescription="classDiagram" role="graphics-document document" viewBox="0 0 796.640625 528" style="max-width: 796.641px; background-color: white;" width="796.640625" id="my-svg">
<style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#my-svg g.classGroup text .title{font-weight:bolder;}#my-svg .nodeLabel,#my-svg .edgeLabel{color:#131300;}#my-svg .edgeLabel .label rect{fill:#ECECFF;}#my-svg .label text{fill:#131300;}#my-svg .edgeLabel .label span{background:#ECECFF;}#my-svg .classTitle{font-weight:bolder;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .divider{stroke:#9370DB;stroke-width:1;}#my-svg g.clickable{cursor:pointer;}#my-svg g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#my-svg g.classGroup line{stroke:#9370DB;stroke-width:1;}#my-svg .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#my-svg .classLabel .label{fill:#9370DB;font-size:10px;}#my-svg .relation{stroke:#333333;stroke-width:1;fill:none;}#my-svg .dashed-line{stroke-dasharray:3;}#my-svg .dotted-line{stroke-dasharray:1 2;}#my-svg #compositionStart,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #compositionEnd,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionStart,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionEnd,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationStart,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationEnd,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopStart,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopEnd,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg .edgeTerminals{font-size:11px;}#my-svg .classTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style>
<g>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker aggregation classDiagram" id="classDiagram-aggregationStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker aggregation classDiagram" id="classDiagram-aggregationEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker extension classDiagram" id="classDiagram-extensionStart">
<path d="M 1,7 L18,13 V 1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker extension classDiagram" id="classDiagram-extensionEnd">
<path d="M 1,1 V 13 L18,7 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker composition classDiagram" id="classDiagram-compositionStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker composition classDiagram" id="classDiagram-compositionEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker dependency classDiagram" id="classDiagram-dependencyStart">
<path d="M 5,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker dependency classDiagram" id="classDiagram-dependencyEnd">
<path d="M 18,7 L9,13 L14,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker lollipop classDiagram" id="classDiagram-lollipopStart">
<circle r="6" cy="7" cx="6" fill="white" stroke="black"/>
</marker>
</defs>
<g class="root">
<g class="clusters"/>
<g class="edgePaths">
<path marker-start="url(#classDiagram-aggregationStart)" style="fill:none" class="edge-pattern-solid relation" id="id1" d="M279.40625,274.8828836217502L236.38541666666666,300.5690696847918C193.36458333333334,326.2552557478335,107.32291666666667,377.6276278739167,64.30208333333333,408.980480603625C21.28125,440.3333333333333,21.28125,451.6666666666667,21.28125,457.3333333333333L21.28125,463"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id2" d="M279.40625,293.3359334907113L249.14583333333334,315.9466112422594C218.88541666666666,338.5572889938075,158.36458333333334,383.7786444969038,128.10416666666666,412.0559889151186C97.84375,440.3333333333333,97.84375,451.6666666666667,97.84375,457.3333333333333L97.84375,463"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id3" d="M279.40625,324.18716577540107L261.90625,341.6559714795009C244.40625,359.12477718360077,209.40625,394.06238859180036,191.90625,417.19786096256684C174.40625,440.3333333333333,174.40625,451.6666666666667,174.40625,457.3333333333333L174.40625,463"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id4" d="M279.40625,386.2527359074953L274.6666666666667,393.37727992291275C269.9270833333333,400.50182393833023,260.4479166666667,414.7509119691651,255.70833333333334,427.5421226512492C250.96875,440.3333333333333,250.96875,451.6666666666667,250.96875,457.3333333333333L250.96875,463"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id5" d="M338.3285885989011,395L336.45481341575095,400.6666666666667C334.58103823260075,406.3333333333333,330.83348786630035,417.6666666666667,328.9597126831502,429C327.0859375,440.3333333333333,327.0859375,451.6666666666667,327.0859375,457.3333333333333L327.0859375,463"/>
<path marker-start="url(#classDiagram-aggregationStart)" style="fill:none" class="edge-pattern-solid relation" id="id6" d="M402.3125,395L402.3125,400.6666666666667C402.3125,406.3333333333333,402.3125,417.6666666666667,402.3125,429C402.3125,440.3333333333333,402.3125,451.6666666666667,402.3125,457.3333333333333L402.3125,463"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id7" d="M467.0539320054945,395L468.94989125457874,400.6666666666667C470.84585050366303,406.3333333333333,474.6377690018315,417.6666666666667,476.5337282509158,429C478.4296875,440.3333333333333,478.4296875,451.6666666666667,478.4296875,457.3333333333333L478.4296875,463"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id8" d="M525.21875,384.1035714285714L530.2552083333334,391.58630952380946C535.2916666666666,399.0690476190476,545.3645833333334,414.03452380952376,550.4010416666666,427.18392857142857C555.4375,440.3333333333333,555.4375,451.6666666666667,555.4375,457.3333333333333L555.4375,463"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id9" d="M525.21875,325.1493349455865L542.4231770833334,342.45777912132206C559.6276041666666,359.76622329705765,594.0364583333334,394.38311164852877,611.2408854166666,417.35822249093104C628.4453125,440.3333333333333,628.4453125,451.6666666666667,628.4453125,457.3333333333333L628.4453125,463"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id10" d="M525.21875,295.38850996852045L554.3697916666666,317.6570916404337C583.5208333333334,339.925673312347,641.8229166666666,384.46283665617347,670.9739583333334,412.3980849947534C700.125,440.3333333333333,700.125,451.6666666666667,700.125,457.3333333333333L700.125,463"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id11" d="M525.21875,276.45350785340315L566.9088541666666,301.8779232111693C608.5989583333334,327.30233856893545,691.9791666666666,378.1511692844677,733.6692708333334,409.2422513089005C775.359375,440.3333333333333,775.359375,451.6666666666667,775.359375,457.3333333333333L775.359375,463"/>
</g>
<g class="edgeLabels">
<g transform="translate(21.28125, 429)" class="edgeLabel">
<g transform="translate(-9.125, -9)" class="label">
<foreignObject height="18" width="18.25">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+a</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(97.84375, 429)" class="edgeLabel">
<g transform="translate(-9.125, -9)" class="label">
<foreignObject height="18" width="18.25">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+b</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(174.40625, 429)" class="edgeLabel">
<g transform="translate(-8.671875, -9)" class="label">
<foreignObject height="18" width="17.34375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+c</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(250.96875, 429)" class="edgeLabel">
<g transform="translate(-9.125, -9)" class="label">
<foreignObject height="18" width="18.25">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+d</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(327.0859375, 429)" class="edgeLabel">
<g transform="translate(-9.125, -9)" class="label">
<foreignObject height="18" width="18.25">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+e</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(402.3125, 429)" class="edgeLabel">
<g transform="translate(-6.8984375, -9)" class="label">
<foreignObject height="18" width="13.796875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+f</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(478.4296875, 429)" class="edgeLabel">
<g transform="translate(-9.125, -9)" class="label">
<foreignObject height="18" width="18.25">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+g</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(555.4375, 429)" class="edgeLabel">
<g transform="translate(-9.125, -9)" class="label">
<foreignObject height="18" width="18.25">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+h</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(628.4453125, 429)" class="edgeLabel">
<g transform="translate(-6.453125, -9)" class="label">
<foreignObject height="18" width="12.90625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+i</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(700.125, 429)" class="edgeLabel">
<g transform="translate(-6.453125, -9)" class="label">
<foreignObject height="18" width="12.90625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+j</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(775.359375, 429)" class="edgeLabel">
<g transform="translate(-8.671875, -9)" class="label">
<foreignObject height="18" width="17.34375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+k</span>
</span>
</div>
</foreignObject>
</g>
</g>
</g>
<g class="nodes">
<a transform="translate(21.28125, 491.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L3">
<g title="A" id="classId-C_0000096355893895780319-0" class="node default clickable">
<rect height="57" width="26.5625" y="-28.5" x="-13.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.28125" x1="-13.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.28125" x1="-13.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -21)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(97.84375, 491.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L5">
<g title="B" id="classId-C_0001909425857334087541-1" class="node default clickable">
<rect height="57" width="26.5625" y="-28.5" x="-13.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.28125" x1="-13.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.28125" x1="-13.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -21)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">B</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(174.40625, 491.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L7">
<g title="C" id="classId-C_0000968176384460064907-2" class="node default clickable">
<rect height="57" width="26.5625" y="-28.5" x="-13.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.28125" x1="-13.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.28125" x1="-13.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -21)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">C</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(250.96875, 491.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L9">
<g title="D" id="classId-C_0001735599590836186693-3" class="node default clickable">
<rect height="57" width="26.5625" y="-28.5" x="-13.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.28125" x1="-13.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.28125" x1="-13.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -21)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">D</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(327.0859375, 491.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L11">
<g title="E" id="classId-C_0000887960136921844658-4" class="node default clickable">
<rect height="57" width="25.671875" y="-28.5" x="-12.8359375" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="12.8359375" x1="-12.8359375" class="divider"/>
<line y2="17.5" y1="17.5" x2="12.8359375" x1="-12.8359375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.3359375, -21)" height="18" width="10.671875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">E</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(402.3125, 491.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L13">
<g title="F" id="classId-C_0000772719357856231772-5" class="node default clickable">
<rect height="57" width="24.78125" y="-28.5" x="-12.390625" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="12.390625" x1="-12.390625" class="divider"/>
<line y2="17.5" y1="17.5" x2="12.390625" x1="-12.390625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -4.890625, -21)" height="18" width="9.78125" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">F</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(478.4296875, 491.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L15">
<g title="G" id="classId-C_0000979147885884736437-6" class="node default clickable">
<rect height="57" width="27.453125" y="-28.5" x="-13.7265625" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.7265625" x1="-13.7265625" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.7265625" x1="-13.7265625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -6.2265625, -21)" height="18" width="12.453125" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">G</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(555.4375, 491.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L17">
<g title="H" id="classId-C_0001440673301054236675-7" class="node default clickable">
<rect height="57" width="26.5625" y="-28.5" x="-13.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.28125" x1="-13.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.28125" x1="-13.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -21)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">H</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(628.4453125, 491.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L19">
<g title="I" id="classId-C_0000109681731550086430-8" class="node default clickable">
<rect height="57" width="19.453125" y="-28.5" x="-9.7265625" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="9.7265625" x1="-9.7265625" class="divider"/>
<line y2="17.5" y1="17.5" x2="9.7265625" x1="-9.7265625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -2.2265625, -21)" height="18" width="4.453125" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">I</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(700.125, 491.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L21">
<g title="J" id="classId-C_0000338330011969650325-9" class="node default clickable">
<rect height="57" width="23.90625" y="-28.5" x="-11.953125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="11.953125" x1="-11.953125" class="divider"/>
<line y2="17.5" y1="17.5" x2="11.953125" x1="-11.953125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -4.453125, -21)" height="18" width="8.90625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">J</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(775.359375, 491.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L23">
<g title="K" id="classId-C_0002179119389830432509-10" class="node default clickable">
<rect height="57" width="26.5625" y="-28.5" x="-13.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.28125" x1="-13.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.28125" x1="-13.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -21)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">K</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(402.3125, 201.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00005/t00005.cc#L25">
<g title="R" id="classId-C_0000630692407373144211-11" class="node default clickable">
<rect height="387" width="245.8125" y="-193.5" x="-122.90625" class="outer title-state"/>
<line y2="-163.5" y1="-163.5" x2="122.90625" x1="-122.90625" class="divider"/>
<line y2="182.5" y1="182.5" x2="122.90625" x1="-122.90625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -186)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">R</span>
</div>
</foreignObject>
<foreignObject transform="translate( -115.40625, -152)" height="18" width="41.375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+a : A</span>
</div>
</foreignObject>
<foreignObject transform="translate( -115.40625, -130)" height="18" width="42.25">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-style: italic; display: inline-block; white-space: nowrap;">
<span style="font-style:italic;" class="nodeLabel">+b : B </span>
</div>
</foreignObject>
<foreignObject transform="translate( -115.40625, -108)" height="18" width="57.359375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+c : C &amp;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -115.40625, -86)" height="18" width="85.828125">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-style: italic; display: inline-block; white-space: nowrap;">
<span style="font-style:italic;" class="nodeLabel">+d : const D </span>
</div>
</foreignObject>
<foreignObject transform="translate( -115.40625, -64)" height="18" width="100.0625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+e : const E &amp;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -115.40625, -42)" height="18" width="62.6875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+f : F &amp;&amp;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -115.40625, -20)" height="18" width="54.703125">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-style: italic; display: inline-block; white-space: nowrap;">
<span style="font-style:italic;" class="nodeLabel">+g : G *</span>
</div>
</foreignObject>
<foreignObject transform="translate( -115.40625, 2)" height="18" width="60.03125">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-style: italic; display: inline-block; white-space: nowrap;">
<span style="font-style:italic;" class="nodeLabel">+h : H **</span>
</div>
</foreignObject>
<foreignObject transform="translate( -115.40625, 24)" height="18" width="52.03125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+i : I *&amp;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -115.40625, 46)" height="18" width="88.484375">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-style: italic; display: inline-block; white-space: nowrap;">
<span style="font-style:italic;" class="nodeLabel">+j : volatile J </span>
</div>
</foreignObject>
<foreignObject transform="translate( -115.40625, 68)" height="18" width="41.359375">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-style: italic; display: inline-block; white-space: nowrap;">
<span style="font-style:italic;" class="nodeLabel">+k : K </span>
</div>
</foreignObject>
<foreignObject transform="translate( -115.40625, 90)" height="18" width="104.5">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+some_int : int</span>
</div>
</foreignObject>
<foreignObject transform="translate( -115.40625, 112)" height="18" width="162.328125">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-style: italic; display: inline-block; white-space: nowrap;">
<span style="font-style:italic;" class="nodeLabel">+some_int_pointer : int </span>
</div>
</foreignObject>
<foreignObject transform="translate( -115.40625, 134)" height="18" width="230.8125">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-style: italic; display: inline-block; white-space: nowrap;">
<span style="font-style:italic;" class="nodeLabel">+some_int_pointer_pointer : int *</span>
</div>
</foreignObject>
<foreignObject transform="translate( -115.40625, 156)" height="18" width="196.109375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+some_int_reference : int &amp;</span>
</div>
</foreignObject>
</g>
</g>
</a>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="479px" preserveAspectRatio="none" style="width:1390px;height:479px;" version="1.1" viewBox="0 0 1390 479" width="1390px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="fyr5ze5qy3f51" width="300%" x="-1" y="-1">
<filter height="300%" id="fmnr5d3pcw3ey" width="300%" x="-1" y="-1">
<feGaussianBlur result="blurOut" stdDeviation="2.0"/>
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
@@ -9,313 +9,315 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000125" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0000989095304444672400" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="299"/>
<ellipse cx="21" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,320.6406 Q23.3906,320.9375 22.75,321.0781 Q22.1094,321.2344 21.4063,321.2344 Q18.9063,321.2344 17.5781,319.5938 Q16.2656,317.9375 16.2656,314.8125 Q16.2656,311.6875 17.5781,310.0313 Q18.9063,308.375 21.4063,308.375 Q22.1094,308.375 22.75,308.5313 Q23.4063,308.6875 23.9688,308.9844 L23.9688,311.7031 Q23.3438,311.125 22.75,310.8594 Q22.1563,310.5781 21.5313,310.5781 Q20.1875,310.5781 19.5,311.6563 Q18.8125,312.7188 18.8125,314.8125 Q18.8125,316.9063 19.5,317.9844 Q20.1875,319.0469 21.5313,319.0469 Q22.1563,319.0469 22.75,318.7813 Q23.3438,318.5 23.9688,317.9219 L23.9688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="35" y="319.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="45" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="45" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L10" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L10" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000129" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="81" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L9" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L9" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0000648285260245005311" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="81" y="299"/>
<ellipse cx="96" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M98.9688,320.6406 Q98.3906,320.9375 97.75,321.0781 Q97.1094,321.2344 96.4063,321.2344 Q93.9063,321.2344 92.5781,319.5938 Q91.2656,317.9375 91.2656,314.8125 Q91.2656,311.6875 92.5781,310.0313 Q93.9063,308.375 96.4063,308.375 Q97.1094,308.375 97.75,308.5313 Q98.4063,308.6875 98.9688,308.9844 L98.9688,311.7031 Q98.3438,311.125 97.75,310.8594 Q97.1563,310.5781 96.5313,310.5781 Q95.1875,310.5781 94.5,311.6563 Q93.8125,312.7188 93.8125,314.8125 Q93.8125,316.9063 94.5,317.9844 Q95.1875,319.0469 96.5313,319.0469 Q97.1563,319.0469 97.75,318.7813 Q98.3438,318.5 98.9688,317.9219 L98.9688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="110" y="319.1543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="82" x2="120" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="82" x2="120" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L13" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L13" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000133" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="156" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L11" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L11" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0000323304333007297774" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="156" y="299"/>
<ellipse cx="171" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M173.9688,320.6406 Q173.3906,320.9375 172.75,321.0781 Q172.1094,321.2344 171.4063,321.2344 Q168.9063,321.2344 167.5781,319.5938 Q166.2656,317.9375 166.2656,314.8125 Q166.2656,311.6875 167.5781,310.0313 Q168.9063,308.375 171.4063,308.375 Q172.1094,308.375 172.75,308.5313 Q173.4063,308.6875 173.9688,308.9844 L173.9688,311.7031 Q173.3438,311.125 172.75,310.8594 Q172.1563,310.5781 171.5313,310.5781 Q170.1875,310.5781 169.5,311.6563 Q168.8125,312.7188 168.8125,314.8125 Q168.8125,316.9063 169.5,317.9844 Q170.1875,319.0469 171.5313,319.0469 Q172.1563,319.0469 172.75,318.7813 Q173.3438,318.5 173.9688,317.9219 L173.9688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="185" y="319.1543">C</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="157" x2="195" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="157" x2="195" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L16" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L16" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000137" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="231.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L13" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L13" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0001006912399043633492" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="231.5" y="299"/>
<ellipse cx="246.5" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M249.4688,320.6406 Q248.8906,320.9375 248.25,321.0781 Q247.6094,321.2344 246.9063,321.2344 Q244.4063,321.2344 243.0781,319.5938 Q241.7656,317.9375 241.7656,314.8125 Q241.7656,311.6875 243.0781,310.0313 Q244.4063,308.375 246.9063,308.375 Q247.6094,308.375 248.25,308.5313 Q248.9063,308.6875 249.4688,308.9844 L249.4688,311.7031 Q248.8438,311.125 248.25,310.8594 Q247.6563,310.5781 247.0313,310.5781 Q245.6875,310.5781 245,311.6563 Q244.3125,312.7188 244.3125,314.8125 Q244.3125,316.9063 245,317.9844 Q245.6875,319.0469 247.0313,319.0469 Q247.6563,319.0469 248.25,318.7813 Q248.8438,318.5 249.4688,317.9219 L249.4688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="260.5" y="319.1543">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="232.5" x2="271.5" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="232.5" x2="271.5" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L19" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L19" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000141" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="1146" y="414.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L15" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L15" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0001092550394020578978" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="1146" y="414.5"/>
<ellipse cx="1161" cy="430.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1163.9688,436.1406 Q1163.3906,436.4375 1162.75,436.5781 Q1162.1094,436.7344 1161.4063,436.7344 Q1158.9063,436.7344 1157.5781,435.0938 Q1156.2656,433.4375 1156.2656,430.3125 Q1156.2656,427.1875 1157.5781,425.5313 Q1158.9063,423.875 1161.4063,423.875 Q1162.1094,423.875 1162.75,424.0313 Q1163.4063,424.1875 1163.9688,424.4844 L1163.9688,427.2031 Q1163.3438,426.625 1162.75,426.3594 Q1162.1563,426.0781 1161.5313,426.0781 Q1160.1875,426.0781 1159.5,427.1563 Q1158.8125,428.2188 1158.8125,430.3125 Q1158.8125,432.4063 1159.5,433.4844 Q1160.1875,434.5469 1161.5313,434.5469 Q1162.1563,434.5469 1162.75,434.2813 Q1163.3438,434 1163.9688,433.4219 L1163.9688,436.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="1175" y="434.6543">E</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1147" x2="1185" y1="446.5" y2="446.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1147" x2="1185" y1="454.5" y2="454.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L22" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L22" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000145" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="307.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L17" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L17" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0000965398761810782236" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="307.5" y="299"/>
<ellipse cx="322.5" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M325.4688,320.6406 Q324.8906,320.9375 324.25,321.0781 Q323.6094,321.2344 322.9063,321.2344 Q320.4063,321.2344 319.0781,319.5938 Q317.7656,317.9375 317.7656,314.8125 Q317.7656,311.6875 319.0781,310.0313 Q320.4063,308.375 322.9063,308.375 Q323.6094,308.375 324.25,308.5313 Q324.9063,308.6875 325.4688,308.9844 L325.4688,311.7031 Q324.8438,311.125 324.25,310.8594 Q323.6563,310.5781 323.0313,310.5781 Q321.6875,310.5781 321,311.6563 Q320.3125,312.7188 320.3125,314.8125 Q320.3125,316.9063 321,317.9844 Q321.6875,319.0469 323.0313,319.0469 Q323.6563,319.0469 324.25,318.7813 Q324.8438,318.5 325.4688,317.9219 L325.4688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="7" x="336.5" y="319.1543">F</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="308.5" x2="345.5" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="308.5" x2="345.5" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L25" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L25" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000149" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="381.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L19" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L19" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0001764732000887030464" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="381.5" y="299"/>
<ellipse cx="396.5" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M399.4688,320.6406 Q398.8906,320.9375 398.25,321.0781 Q397.6094,321.2344 396.9063,321.2344 Q394.4063,321.2344 393.0781,319.5938 Q391.7656,317.9375 391.7656,314.8125 Q391.7656,311.6875 393.0781,310.0313 Q394.4063,308.375 396.9063,308.375 Q397.6094,308.375 398.25,308.5313 Q398.9063,308.6875 399.4688,308.9844 L399.4688,311.7031 Q398.8438,311.125 398.25,310.8594 Q397.6563,310.5781 397.0313,310.5781 Q395.6875,310.5781 395,311.6563 Q394.3125,312.7188 394.3125,314.8125 Q394.3125,316.9063 395,317.9844 Q395.6875,319.0469 397.0313,319.0469 Q397.6563,319.0469 398.25,318.7813 Q398.8438,318.5 399.4688,317.9219 L399.4688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="410.5" y="319.1543">G</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="382.5" x2="421.5" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="382.5" x2="421.5" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L28" target="_top" title="H" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L28" xlink:show="new" xlink:title="H" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000153" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="457.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L21" target="_top" title="H" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L21" xlink:show="new" xlink:title="H" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0001669285599837552146" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="457.5" y="299"/>
<ellipse cx="472.5" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M475.4688,320.6406 Q474.8906,320.9375 474.25,321.0781 Q473.6094,321.2344 472.9063,321.2344 Q470.4063,321.2344 469.0781,319.5938 Q467.7656,317.9375 467.7656,314.8125 Q467.7656,311.6875 469.0781,310.0313 Q470.4063,308.375 472.9063,308.375 Q473.6094,308.375 474.25,308.5313 Q474.9063,308.6875 475.4688,308.9844 L475.4688,311.7031 Q474.8438,311.125 474.25,310.8594 Q473.6563,310.5781 473.0313,310.5781 Q471.6875,310.5781 471,311.6563 Q470.3125,312.7188 470.3125,314.8125 Q470.3125,316.9063 471,317.9844 Q471.6875,319.0469 473.0313,319.0469 Q473.6563,319.0469 474.25,318.7813 Q474.8438,318.5 475.4688,317.9219 L475.4688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="486.5" y="319.1543">H</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="458.5" x2="497.5" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="458.5" x2="497.5" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L31" target="_top" title="I" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L31" xlink:show="new" xlink:title="I" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000157" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="533.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L23" target="_top" title="I" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L23" xlink:show="new" xlink:title="I" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0002234750598599000377" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="533.5" y="299"/>
<ellipse cx="548.5" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M551.4688,320.6406 Q550.8906,320.9375 550.25,321.0781 Q549.6094,321.2344 548.9063,321.2344 Q546.4063,321.2344 545.0781,319.5938 Q543.7656,317.9375 543.7656,314.8125 Q543.7656,311.6875 545.0781,310.0313 Q546.4063,308.375 548.9063,308.375 Q549.6094,308.375 550.25,308.5313 Q550.9063,308.6875 551.4688,308.9844 L551.4688,311.7031 Q550.8438,311.125 550.25,310.8594 Q549.6563,310.5781 549.0313,310.5781 Q547.6875,310.5781 547,311.6563 Q546.3125,312.7188 546.3125,314.8125 Q546.3125,316.9063 547,317.9844 Q547.6875,319.0469 549.0313,319.0469 Q549.6563,319.0469 550.25,318.7813 Q550.8438,318.5 551.4688,317.9219 L551.4688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="3" x="562.5" y="319.1543">I</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="534.5" x2="567.5" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="534.5" x2="567.5" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L34" target="_top" title="J" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L34" xlink:show="new" xlink:title="J" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000161" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="603.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L25" target="_top" title="J" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L25" xlink:show="new" xlink:title="J" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0001335933649375465369" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="603.5" y="299"/>
<ellipse cx="618.5" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M621.4688,320.6406 Q620.8906,320.9375 620.25,321.0781 Q619.6094,321.2344 618.9063,321.2344 Q616.4063,321.2344 615.0781,319.5938 Q613.7656,317.9375 613.7656,314.8125 Q613.7656,311.6875 615.0781,310.0313 Q616.4063,308.375 618.9063,308.375 Q619.6094,308.375 620.25,308.5313 Q620.9063,308.6875 621.4688,308.9844 L621.4688,311.7031 Q620.8438,311.125 620.25,310.8594 Q619.6563,310.5781 619.0313,310.5781 Q617.6875,310.5781 617,311.6563 Q616.3125,312.7188 616.3125,314.8125 Q616.3125,316.9063 617,317.9844 Q617.6875,319.0469 619.0313,319.0469 Q619.6563,319.0469 620.25,318.7813 Q620.8438,318.5 621.4688,317.9219 L621.4688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="3" x="632.5" y="319.1543">J</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="604.5" x2="637.5" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="604.5" x2="637.5" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L37" target="_top" title="K" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L37" xlink:show="new" xlink:title="K" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000165" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="673.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L27" target="_top" title="K" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L27" xlink:show="new" xlink:title="K" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0001603190364864080123" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="673.5" y="299"/>
<ellipse cx="688.5" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M691.4688,320.6406 Q690.8906,320.9375 690.25,321.0781 Q689.6094,321.2344 688.9063,321.2344 Q686.4063,321.2344 685.0781,319.5938 Q683.7656,317.9375 683.7656,314.8125 Q683.7656,311.6875 685.0781,310.0313 Q686.4063,308.375 688.9063,308.375 Q689.6094,308.375 690.25,308.5313 Q690.9063,308.6875 691.4688,308.9844 L691.4688,311.7031 Q690.8438,311.125 690.25,310.8594 Q689.6563,310.5781 689.0313,310.5781 Q687.6875,310.5781 687,311.6563 Q686.3125,312.7188 686.3125,314.8125 Q686.3125,316.9063 687,317.9844 Q687.6875,319.0469 689.0313,319.0469 Q689.6563,319.0469 690.25,318.7813 Q690.8438,318.5 691.4688,317.9219 L691.4688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="7" x="702.5" y="319.1543">K</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="674.5" x2="711.5" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="674.5" x2="711.5" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L40" target="_top" title="L" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L40" xlink:show="new" xlink:title="L" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000169" style="stroke: #A80036; stroke-width: 1.5;" width="38" x="748" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L29" target="_top" title="L" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L29" xlink:show="new" xlink:title="L" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0000305487238408320046" style="stroke: #A80036; stroke-width: 1.5;" width="38" x="748" y="299"/>
<ellipse cx="763" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M765.9688,320.6406 Q765.3906,320.9375 764.75,321.0781 Q764.1094,321.2344 763.4063,321.2344 Q760.9063,321.2344 759.5781,319.5938 Q758.2656,317.9375 758.2656,314.8125 Q758.2656,311.6875 759.5781,310.0313 Q760.9063,308.375 763.4063,308.375 Q764.1094,308.375 764.75,308.5313 Q765.4063,308.6875 765.9688,308.9844 L765.9688,311.7031 Q765.3438,311.125 764.75,310.8594 Q764.1563,310.5781 763.5313,310.5781 Q762.1875,310.5781 761.5,311.6563 Q760.8125,312.7188 760.8125,314.8125 Q760.8125,316.9063 761.5,317.9844 Q762.1875,319.0469 763.5313,319.0469 Q764.1563,319.0469 764.75,318.7813 Q765.3438,318.5 765.9688,317.9219 L765.9688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="6" x="777" y="319.1543">L</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="749" x2="785" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="749" x2="785" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L43" target="_top" title="M" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L43" xlink:show="new" xlink:title="M" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000173" style="stroke: #A80036; stroke-width: 1.5;" width="42" x="821" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L31" target="_top" title="M" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L31" xlink:show="new" xlink:title="M" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0001664744512423723275" style="stroke: #A80036; stroke-width: 1.5;" width="42" x="821" y="299"/>
<ellipse cx="836" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M838.9688,320.6406 Q838.3906,320.9375 837.75,321.0781 Q837.1094,321.2344 836.4063,321.2344 Q833.9063,321.2344 832.5781,319.5938 Q831.2656,317.9375 831.2656,314.8125 Q831.2656,311.6875 832.5781,310.0313 Q833.9063,308.375 836.4063,308.375 Q837.1094,308.375 837.75,308.5313 Q838.4063,308.6875 838.9688,308.9844 L838.9688,311.7031 Q838.3438,311.125 837.75,310.8594 Q837.1563,310.5781 836.5313,310.5781 Q835.1875,310.5781 834.5,311.6563 Q833.8125,312.7188 833.8125,314.8125 Q833.8125,316.9063 834.5,317.9844 Q835.1875,319.0469 836.5313,319.0469 Q837.1563,319.0469 837.75,318.7813 Q838.3438,318.5 838.9688,317.9219 L838.9688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="10" x="850" y="319.1543">M</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="822" x2="862" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="822" x2="862" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L46" target="_top" title="N" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L46" xlink:show="new" xlink:title="N" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000177" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="898.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L33" target="_top" title="N" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L33" xlink:show="new" xlink:title="N" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0000950210019792152600" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="898.5" y="299"/>
<ellipse cx="913.5" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M916.4688,320.6406 Q915.8906,320.9375 915.25,321.0781 Q914.6094,321.2344 913.9063,321.2344 Q911.4063,321.2344 910.0781,319.5938 Q908.7656,317.9375 908.7656,314.8125 Q908.7656,311.6875 910.0781,310.0313 Q911.4063,308.375 913.9063,308.375 Q914.6094,308.375 915.25,308.5313 Q915.9063,308.6875 916.4688,308.9844 L916.4688,311.7031 Q915.8438,311.125 915.25,310.8594 Q914.6563,310.5781 914.0313,310.5781 Q912.6875,310.5781 912,311.6563 Q911.3125,312.7188 911.3125,314.8125 Q911.3125,316.9063 912,317.9844 Q912.6875,319.0469 914.0313,319.0469 Q914.6563,319.0469 915.25,318.7813 Q915.8438,318.5 916.4688,317.9219 L916.4688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="927.5" y="319.1543">N</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="899.5" x2="938.5" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="899.5" x2="938.5" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L49" target="_top" title="NN" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L49" xlink:show="new" xlink:title="NN" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000181" style="stroke: #A80036; stroke-width: 1.5;" width="50" x="975" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L35" target="_top" title="NN" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L35" xlink:show="new" xlink:title="NN" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0001662349735899726224" style="stroke: #A80036; stroke-width: 1.5;" width="50" x="975" y="299"/>
<ellipse cx="990" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M992.9688,320.6406 Q992.3906,320.9375 991.75,321.0781 Q991.1094,321.2344 990.4063,321.2344 Q987.9063,321.2344 986.5781,319.5938 Q985.2656,317.9375 985.2656,314.8125 Q985.2656,311.6875 986.5781,310.0313 Q987.9063,308.375 990.4063,308.375 Q991.1094,308.375 991.75,308.5313 Q992.4063,308.6875 992.9688,308.9844 L992.9688,311.7031 Q992.3438,311.125 991.75,310.8594 Q991.1563,310.5781 990.5313,310.5781 Q989.1875,310.5781 988.5,311.6563 Q987.8125,312.7188 987.8125,314.8125 Q987.8125,316.9063 988.5,317.9844 Q989.1875,319.0469 990.5313,319.0469 Q991.1563,319.0469 991.75,318.7813 Q992.3438,318.5 992.9688,317.9219 L992.9688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="18" x="1004" y="319.1543">NN</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="976" x2="1024" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="976" x2="1024" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L52" target="_top" title="NNN" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L52" xlink:show="new" xlink:title="NNN" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000185" style="stroke: #A80036; stroke-width: 1.5;" width="59" x="1060.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L37" target="_top" title="NNN" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L37" xlink:show="new" xlink:title="NNN" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0001963145075481599858" style="stroke: #A80036; stroke-width: 1.5;" width="59" x="1060.5" y="299"/>
<ellipse cx="1075.5" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1078.4688,320.6406 Q1077.8906,320.9375 1077.25,321.0781 Q1076.6094,321.2344 1075.9063,321.2344 Q1073.4063,321.2344 1072.0781,319.5938 Q1070.7656,317.9375 1070.7656,314.8125 Q1070.7656,311.6875 1072.0781,310.0313 Q1073.4063,308.375 1075.9063,308.375 Q1076.6094,308.375 1077.25,308.5313 Q1077.9063,308.6875 1078.4688,308.9844 L1078.4688,311.7031 Q1077.8438,311.125 1077.25,310.8594 Q1076.6563,310.5781 1076.0313,310.5781 Q1074.6875,310.5781 1074,311.6563 Q1073.3125,312.7188 1073.3125,314.8125 Q1073.3125,316.9063 1074,317.9844 Q1074.6875,319.0469 1076.0313,319.0469 Q1076.6563,319.0469 1077.25,318.7813 Q1077.8438,318.5 1078.4688,317.9219 L1078.4688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="27" x="1089.5" y="319.1543">NNN</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1061.5" x2="1118.5" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1061.5" x2="1118.5" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L55" target="_top" title="custom_container" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L55" xlink:show="new" xlink:title="custom_container" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="60.8047" id="C_0000000189" style="stroke: #A80036; stroke-width: 1.5;" width="155" x="1221.5" y="408"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L39" target="_top" title="custom_container" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L39" xlink:show="new" xlink:title="custom_container" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="60.8047" id="C_0000916380191954937631" style="stroke: #A80036; stroke-width: 1.5;" width="155" x="1221.5" y="408"/>
<ellipse cx="1236.5" cy="424" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1239.4688,429.6406 Q1238.8906,429.9375 1238.25,430.0781 Q1237.6094,430.2344 1236.9063,430.2344 Q1234.4063,430.2344 1233.0781,428.5938 Q1231.7656,426.9375 1231.7656,423.8125 Q1231.7656,420.6875 1233.0781,419.0313 Q1234.4063,417.375 1236.9063,417.375 Q1237.6094,417.375 1238.25,417.5313 Q1238.9063,417.6875 1239.4688,417.9844 L1239.4688,420.7031 Q1238.8438,420.125 1238.25,419.8594 Q1237.6563,419.5781 1237.0313,419.5781 Q1235.6875,419.5781 1235,420.6563 Q1234.3125,421.7188 1234.3125,423.8125 Q1234.3125,425.9063 1235,426.9844 Q1235.6875,428.0469 1237.0313,428.0469 Q1237.6563,428.0469 1238.25,427.7813 Q1238.8438,427.5 1239.4688,426.9219 L1239.4688,429.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="112" x="1250.5" y="428.1543">custom_container</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="1370.5" y="405"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="1371.5" y="417.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1222.5" x2="1375.5" y1="440" y2="440"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1222.5" x2="1375.5" y1="448" y2="448"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L57" target="_top" title="data" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L57" xlink:show="new" xlink:title="data" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="1227.5" y="446"/>
<ellipse cx="1232.5" cy="451" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L41" target="_top" title="data" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L41" xlink:show="new" xlink:title="data" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="1227.5" y="454"/>
<ellipse cx="1232.5" cy="459" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L57" target="_top" title="data" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L57" xlink:show="new" xlink:title="data" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="123" x="1241.5" y="454.2104">data : std::vector&lt;T&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L41" target="_top" title="data" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L41" xlink:show="new" xlink:title="data" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="123" x="1241.5" y="462.2104">data : std::vector&lt;T&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1222.5" x2="1375.5" y1="460.8047" y2="460.8047"/>
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="48" id="C_0000000210" style="stroke: #A80036; stroke-width: 1.5;" width="156" x="1155" y="299"/>
<ellipse cx="1170" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1172.9688,320.6406 Q1172.3906,320.9375 1171.75,321.0781 Q1171.1094,321.2344 1170.4063,321.2344 Q1167.9063,321.2344 1166.5781,319.5938 Q1165.2656,317.9375 1165.2656,314.8125 Q1165.2656,311.6875 1166.5781,310.0313 Q1167.9063,308.375 1170.4063,308.375 Q1171.1094,308.375 1171.75,308.5313 Q1172.4063,308.6875 1172.9688,308.9844 L1172.9688,311.7031 Q1172.3438,311.125 1171.75,310.8594 Q1171.1563,310.5781 1170.5313,310.5781 Q1169.1875,310.5781 1168.5,311.6563 Q1167.8125,312.7188 1167.8125,314.8125 Q1167.8125,316.9063 1168.5,317.9844 Q1169.1875,319.0469 1170.5313,319.0469 Q1171.1563,319.0469 1171.75,318.7813 Q1172.3438,318.5 1172.9688,317.9219 L1172.9688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="112" x="1184" y="319.1543">custom_container</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="10" x="1304" y="296"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="8" x="1305" y="308.1387">E</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1156" x2="1310" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1156" x2="1310" y1="339" y2="339"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L60" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L60" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fyr5ze5qy3f51)" height="214.4609" id="C_0000000197" style="stroke: #A80036; stroke-width: 1.5;" width="226" x="473" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L39" target="_top" title="custom_container" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L39" xlink:show="new" xlink:title="custom_container" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="48" id="C_0000050153113082434858" style="stroke: #A80036; stroke-width: 1.5;" width="156" x="1155" y="299"/>
<ellipse cx="1170" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1172.9688,320.6406 Q1172.3906,320.9375 1171.75,321.0781 Q1171.1094,321.2344 1170.4063,321.2344 Q1167.9063,321.2344 1166.5781,319.5938 Q1165.2656,317.9375 1165.2656,314.8125 Q1165.2656,311.6875 1166.5781,310.0313 Q1167.9063,308.375 1170.4063,308.375 Q1171.1094,308.375 1171.75,308.5313 Q1172.4063,308.6875 1172.9688,308.9844 L1172.9688,311.7031 Q1172.3438,311.125 1171.75,310.8594 Q1171.1563,310.5781 1170.5313,310.5781 Q1169.1875,310.5781 1168.5,311.6563 Q1167.8125,312.7188 1167.8125,314.8125 Q1167.8125,316.9063 1168.5,317.9844 Q1169.1875,319.0469 1170.5313,319.0469 Q1171.1563,319.0469 1171.75,318.7813 Q1172.3438,318.5 1172.9688,317.9219 L1172.9688,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="112" x="1184" y="319.1543">custom_container</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="10" x="1304" y="296"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="8" x="1305" y="308.1387">E</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1156" x2="1310" y1="331" y2="331"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1156" x2="1310" y1="339" y2="339"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L44" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L44" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fmnr5d3pcw3ey)" height="214.4609" id="C_0000303025561016882526" style="stroke: #A80036; stroke-width: 1.5;" width="230" x="471" y="8"/>
<ellipse cx="577.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M580.7188,29.6406 Q580.1406,29.9375 579.5,30.0781 Q578.8594,30.2344 578.1563,30.2344 Q575.6563,30.2344 574.3281,28.5938 Q573.0156,26.9375 573.0156,23.8125 Q573.0156,20.6875 574.3281,19.0313 Q575.6563,17.375 578.1563,17.375 Q578.8594,17.375 579.5,17.5313 Q580.1563,17.6875 580.7188,17.9844 L580.7188,20.7031 Q580.0938,20.125 579.5,19.8594 Q578.9063,19.5781 578.2813,19.5781 Q576.9375,19.5781 576.25,20.6563 Q575.5625,21.7188 575.5625,23.8125 Q575.5625,25.9063 576.25,26.9844 Q576.9375,28.0469 578.2813,28.0469 Q578.9063,28.0469 579.5,27.7813 Q580.0938,27.5 580.7188,26.9219 L580.7188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="598.25" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="474" x2="698" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="472" x2="700" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="472" x2="700" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L62" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L62" xlink:show="new" xlink:title="a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="479" y="46"/>
<ellipse cx="484" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L46" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L46" xlink:show="new" xlink:title="a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="477" y="54"/>
<ellipse cx="482" cy="59" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L62" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L62" xlink:show="new" xlink:title="a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="105" x="493" y="54.2104">a : std::vector&lt;A&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L46" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L46" xlink:show="new" xlink:title="a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="105" x="491" y="62.2104">a : std::vector&lt;A&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L63" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L63" xlink:show="new" xlink:title="b" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="479" y="58.8047"/>
<ellipse cx="484" cy="63.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L47" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L47" xlink:show="new" xlink:title="b" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="477" y="66.8047"/>
<ellipse cx="482" cy="71.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L63" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L63" xlink:show="new" xlink:title="b" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="112" x="493" y="67.0151">b : std::vector&lt;B*&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L47" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L47" xlink:show="new" xlink:title="b" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="116" x="491" y="75.0151">b : std::vector&lt;B *&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L65" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L65" xlink:show="new" xlink:title="c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="479" y="71.6094"/>
<ellipse cx="484" cy="76.6094" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L49" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L49" xlink:show="new" xlink:title="c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="477" y="79.6094"/>
<ellipse cx="482" cy="84.6094" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L65" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L65" xlink:show="new" xlink:title="c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="113" x="493" y="79.8198">c : std::map&lt;int,C&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L49" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L49" xlink:show="new" xlink:title="c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="113" x="491" y="87.8198">c : std::map&lt;int,C&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L66" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L66" xlink:show="new" xlink:title="d" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="479" y="84.4141"/>
<ellipse cx="484" cy="89.4141" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L50" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L50" xlink:show="new" xlink:title="d" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="477" y="92.4141"/>
<ellipse cx="482" cy="97.4141" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L66" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L66" xlink:show="new" xlink:title="d" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="120" x="493" y="92.6245">d : std::map&lt;int,D*&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L50" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L50" xlink:show="new" xlink:title="d" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="124" x="491" y="100.6245">d : std::map&lt;int,D *&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L68" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L68" xlink:show="new" xlink:title="e" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="479" y="97.2188"/>
<ellipse cx="484" cy="102.2188" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L52" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L52" xlink:show="new" xlink:title="e" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="477" y="105.2188"/>
<ellipse cx="482" cy="110.2188" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L68" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L68" xlink:show="new" xlink:title="e" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="493" y="105.4292">e : custom_container&lt;E&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L52" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L52" xlink:show="new" xlink:title="e" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="491" y="113.4292">e : custom_container&lt;E&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L70" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L70" xlink:show="new" xlink:title="f" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="479" y="110.0234"/>
<ellipse cx="484" cy="115.0234" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L54" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L54" xlink:show="new" xlink:title="f" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="477" y="118.0234"/>
<ellipse cx="482" cy="123.0234" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L70" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L70" xlink:show="new" xlink:title="f" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="180" x="493" y="118.2339">f : std::vector&lt;std::vector&lt;F&gt;&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L54" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L54" xlink:show="new" xlink:title="f" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="180" x="491" y="126.2339">f : std::vector&lt;std::vector&lt;F&gt;&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L71" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L71" xlink:show="new" xlink:title="g" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="479" y="122.8281"/>
<ellipse cx="484" cy="127.8281" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L55" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L55" xlink:show="new" xlink:title="g" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="477" y="130.8281"/>
<ellipse cx="482" cy="135.8281" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L71" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L71" xlink:show="new" xlink:title="g" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="200" x="493" y="131.0386">g : std::map&lt;int,std::vector&lt;G*&gt;&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L55" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L55" xlink:show="new" xlink:title="g" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="204" x="491" y="139.0386">g : std::map&lt;int,std::vector&lt;G *&gt;&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L73" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L73" xlink:show="new" xlink:title="h" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="479" y="135.6328"/>
<ellipse cx="484" cy="140.6328" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L57" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L57" xlink:show="new" xlink:title="h" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="477" y="143.6328"/>
<ellipse cx="482" cy="148.6328" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L73" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L73" xlink:show="new" xlink:title="h" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="119" x="493" y="143.8433">h : std::array&lt;H,10&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L57" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L57" xlink:show="new" xlink:title="h" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="119" x="491" y="151.8433">h : std::array&lt;H,10&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L74" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L74" xlink:show="new" xlink:title="i" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="479" y="148.4375"/>
<ellipse cx="484" cy="153.4375" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L58" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L58" xlink:show="new" xlink:title="i" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="477" y="156.4375"/>
<ellipse cx="482" cy="161.4375" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L74" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L74" xlink:show="new" xlink:title="i" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="109" x="493" y="156.6479">i : std::array&lt;I*,5&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L58" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L58" xlink:show="new" xlink:title="i" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="113" x="491" y="164.6479">i : std::array&lt;I *,5&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L76" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L76" xlink:show="new" xlink:title="j" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="479" y="161.2422"/>
<ellipse cx="484" cy="166.2422" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L60" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L60" xlink:show="new" xlink:title="j" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="477" y="169.2422"/>
<ellipse cx="482" cy="174.2422" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L76" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L76" xlink:show="new" xlink:title="j" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="40" x="493" y="169.4526">j : J[10]</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L60" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L60" xlink:show="new" xlink:title="j" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="40" x="491" y="177.4526">j : J[10]</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L77" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L77" xlink:show="new" xlink:title="k" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="479" y="174.0469"/>
<ellipse cx="484" cy="179.0469" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L61" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L61" xlink:show="new" xlink:title="k" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="477" y="182.0469"/>
<ellipse cx="482" cy="187.0469" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L77" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L77" xlink:show="new" xlink:title="k" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="53" x="493" y="182.2573">k : K*[20]</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L61" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L61" xlink:show="new" xlink:title="k" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="57" x="491" y="190.2573">k : K *[20]</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L79" target="_top" title="lm" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L79" xlink:show="new" xlink:title="lm" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="479" y="186.8516"/>
<ellipse cx="484" cy="191.8516" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L63" target="_top" title="lm" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L63" xlink:show="new" xlink:title="lm" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="477" y="194.8516"/>
<ellipse cx="482" cy="199.8516" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L79" target="_top" title="lm" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L79" xlink:show="new" xlink:title="lm" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="190" x="493" y="195.062">lm : std::vector&lt;std::pair&lt;L,M&gt;&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L63" target="_top" title="lm" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L63" xlink:show="new" xlink:title="lm" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="190" x="491" y="203.062">lm : std::vector&lt;std::pair&lt;L,M&gt;&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L81" target="_top" title="ns" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L81" xlink:show="new" xlink:title="ns" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="479" y="199.6563"/>
<ellipse cx="484" cy="204.6563" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L65" target="_top" title="ns" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L65" xlink:show="new" xlink:title="ns" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="477" y="207.6563"/>
<ellipse cx="482" cy="212.6563" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L81" target="_top" title="ns" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00006/t00006.cc#L81" xlink:show="new" xlink:title="ns" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="154" x="493" y="207.8667">ns : std::tuple&lt;N,NN,NNN&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L65" target="_top" title="ns" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00006/t00006.cc#L65" xlink:show="new" xlink:title="ns" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="154" x="491" y="215.8667">ns : std::tuple&lt;N,NN,NNN&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="474" x2="698" y1="214.4609" y2="214.4609"/>
<path d="M1219.28,347.24 C1208.62,365.3 1193.8,390.41 1182.5,409.56 " fill="none" id="C_0000000210-&gt;C_0000000141" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M1219.28,347.24 C1208.62,365.3 1193.8,390.41 1182.5,409.56 " fill="none" id="C_0000050153113082434858-&gt;C_0001092550394020578978" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="1179.7,414.29,1187.7242,408.5793,1182.2451,409.9862,1180.8381,404.5071,1179.7,414.29" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1246.52,347.24 C1253.75,359.69 1262.94,375.49 1271.6,390.38 " fill="none" id="C_0000000210-&gt;C_0000000189" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M1246.52,347.24 C1253.75,359.69 1262.94,375.49 1271.6,390.38 " fill="none" id="C_0000050153113082434858-&gt;C_0000916380191954937631" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="1277.73,387,1281.73,407.81,1265.63,394.03,1277.73,387" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M460.02,154.89 C378.23,180.82 269.63,216.55 175,252 C124.45,270.94 110.96,274.23 63,299 C57.36,301.92 51.43,305.39 46.02,308.75 " fill="none" id="C_0000000197&lt;-C_0000000125" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="472.66,150.89,465.7321,148.8889,461.2204,154.5143,468.1483,156.5153,472.66,150.89" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M458.29,155.44 C376.7,181.33 268.96,216.8 175,252 C124.45,270.94 110.96,274.23 63,299 C57.36,301.92 51.43,305.39 46.02,308.75 " fill="none" id="C_0000303025561016882526&lt;-C_0000989095304444672400" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="470.89,151.45,463.9642,149.4417,459.4466,155.0623,466.3724,157.0706,470.89,151.45" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="19" x="176" y="265.0669">+a</text>
<path d="M472.71,160.05 C406.16,186.21 320.54,220.36 245,252 C197.09,272.07 183.95,274.78 138,299 C133.87,301.18 129.59,303.64 125.46,306.12 " fill="none" id="C_0000000197-&gt;C_0000000129" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M470.77,160.82 C404.5,186.88 319.81,220.66 245,252 C197.09,272.07 183.95,274.78 138,299 C133.87,301.18 129.59,303.64 125.46,306.12 " fill="none" id="C_0000303025561016882526-&gt;C_0000648285260245005311" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="121.05,308.82,130.8145,307.5335,125.3146,306.2099,126.6383,300.71,121.05,308.82" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="19" x="246" y="265.0669">+b</text>
<path d="M460.81,174.23 C387.99,208.94 294.89,254.73 214,299 C208.18,302.18 201.98,305.82 196.32,309.25 " fill="none" id="C_0000000197&lt;-C_0000000133" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="472.78,168.54,465.6431,167.5085,461.9459,173.6997,469.0829,174.7312,472.78,168.54" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M458.79,175.2 C386.27,209.78 294.14,255.14 214,299 C208.18,302.18 201.98,305.82 196.32,309.25 " fill="none" id="C_0000303025561016882526&lt;-C_0000323304333007297774" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="470.71,169.52,463.5735,168.4851,459.8735,174.6746,467.0099,175.7095,470.71,169.52" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="18" x="296" y="265.0669">+c</text>
<path d="M472.92,185.74 C402.62,229.1 318.04,281.27 276.91,306.64 " fill="none" id="C_0000000197-&gt;C_0000000137" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="272.59,309.3,282.3493,307.9752,276.8444,306.6731,278.1464,301.1682,272.59,309.3" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M470.59,187.18 C400.73,230.27 317.51,281.59 276.85,306.67 " fill="none" id="C_0000303025561016882526-&gt;C_0001006912399043633492" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="272.58,309.31,282.3425,308.0089,276.8407,306.6935,278.1561,301.1917,272.58,309.31" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="19" x="362" y="265.0669">+d</text>
<path d="M712.01,154.98 C798.71,181.93 916.45,218.76 1020,252 C1068,267.41 1121.94,285.14 1163.53,298.9 " fill="none" id="C_0000000197&lt;-C_0000000210" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="699.45,151.08,703.993,156.6801,710.9096,154.6405,706.3666,149.0404,699.45,151.08" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M713.81,155.54 C800.34,182.44 917.17,218.99 1020,252 C1068,267.41 1121.94,285.14 1163.53,298.9 " fill="none" id="C_0000303025561016882526&lt;-C_0000050153113082434858" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="701.27,151.65,705.813,157.2501,712.7296,155.2105,708.1866,149.6104,701.27,151.65" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="19" x="1068" y="265.0669">+e</text>
<path d="M462.35,214.35 C417.62,249.92 371.97,286.24 346.77,306.27 " fill="none" id="C_0000000197&lt;-C_0000000145" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="472.78,206.05,465.5941,206.6525,463.3865,213.5173,470.5723,212.9149,472.78,206.05" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M460.61,215.73 C416.52,250.8 371.79,286.38 346.9,306.17 " fill="none" id="C_0000303025561016882526&lt;-C_0000965398761810782236" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="470.89,207.55,463.7046,208.1587,461.5029,215.0254,468.6882,214.4168,470.89,207.55" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="15" x="412" y="265.0669">+f</text>
<path d="M491.31,222.02 C467.24,248.96 443.42,275.63 426.44,294.64 " fill="none" id="C_0000000197-&gt;C_0000000149" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M491.31,222.02 C467.24,248.96 443.42,275.63 426.44,294.64 " fill="none" id="C_0000303025561016882526-&gt;C_0001764732000887030464" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="422.7,298.82,431.6776,294.7699,426.0298,295.0901,425.7097,289.4423,422.7,298.82" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="19" x="463" y="265.0669">+g</text>
<path d="M524.21,233.86 C511.21,258.66 498.82,282.28 490.15,298.82 " fill="none" id="C_0000000197&lt;-C_0000000153" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M524.21,233.86 C511.21,258.66 498.82,282.28 490.15,298.82 " fill="none" id="C_0000303025561016882526&lt;-C_0001669285599837552146" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="530.42,222.02,524.0933,225.4801,524.8539,232.651,531.1806,229.1909,530.42,222.02" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="19" x="514" y="265.0669">+h</text>
<path d="M567.07,222.13 C565.33,232.23 563.62,242.3 562,252 C559.7,265.82 557.26,281.2 555.28,294.01 " fill="none" id="C_0000000197-&gt;C_0000000157" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M567.07,222.13 C565.33,232.23 563.62,242.3 562,252 C559.7,265.82 557.26,281.2 555.28,294.01 " fill="none" id="C_0000303025561016882526-&gt;C_0002234750598599000377" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="554.51,298.97,559.8266,290.6794,555.2671,294.0276,551.9188,289.4681,554.51,298.97" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="14" x="563" y="265.0669">+i</text>
<path d="M606.2,234.87 C610.35,259.3 614.29,282.51 617.06,298.82 " fill="none" id="C_0000000197&lt;-C_0000000161" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M606.2,234.87 C610.35,259.3 614.29,282.51 617.06,298.82 " fill="none" id="C_0000303025561016882526&lt;-C_0001335933649375465369" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="604.01,222.02,601.0746,228.6066,606.0255,233.8495,608.9609,227.2629,604.01,222.02" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="14" x="613" y="265.0669">+j</text>
<path d="M641.07,222.02 C654.95,248.74 668.68,275.18 678.54,294.16 " fill="none" id="C_0000000197-&gt;C_0000000165" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M641.07,222.02 C654.95,248.74 668.68,275.18 678.54,294.16 " fill="none" id="C_0000303025561016882526-&gt;C_0001603190364864080123" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="680.96,298.82,680.3746,288.9886,678.6613,294.3797,673.2702,292.6664,680.96,298.82" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="18" x="666" y="265.0669">+k</text>
<path d="M688.02,232.11 C711.05,258.33 733.08,283.39 747.99,300.36 " fill="none" id="C_0000000197&lt;-C_0000000169" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M688.02,232.11 C711.05,258.33 733.08,283.39 747.99,300.36 " fill="none" id="C_0000303025561016882526&lt;-C_0000305487238408320046" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="679.15,222.02,680.1055,229.1675,687.0707,231.0346,686.1152,223.8871,679.15,222.02" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="725" cy="261.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="732" y="265.0669">lm</text>
<path d="M709.79,214.04 C725.71,226.77 741.76,239.67 757,252 C778.84,269.68 803.63,290.14 820.77,304.35 " fill="none" id="C_0000000197&lt;-C_0000000173" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="699.35,205.71,701.5411,212.5801,708.7256,213.1999,706.5344,206.3298,699.35,205.71" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M711.74,215.61 C727.02,227.83 742.39,240.17 757,252 C778.84,269.68 803.63,290.14 820.77,304.35 " fill="none" id="C_0000303025561016882526&lt;-C_0001664744512423723275" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="701.19,207.18,703.3811,214.0501,710.5656,214.6699,708.3744,207.7998,701.19,207.18" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="782" cy="261.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="789" y="265.0669">lm</text>
<path d="M710.52,188.74 C744.3,208.89 780.73,231.01 814,252 C843.65,270.71 877.25,293.37 898.28,307.74 " fill="none" id="C_0000000197&lt;-C_0000000177" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="699.17,181.99,702.2766,188.4976,709.4785,188.1329,706.3719,181.6253,699.17,181.99" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M712.39,189.86 C745.64,209.71 781.34,231.39 814,252 C843.65,270.71 877.25,293.37 898.28,307.74 " fill="none" id="C_0000303025561016882526&lt;-C_0000950210019792152600" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="701.21,183.2,704.3166,189.7076,711.5185,189.3429,708.4119,182.8353,701.21,183.2" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="847" cy="261.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="15" x="854" y="265.0669">ns</text>
<path d="M711.06,171.42 C763.17,195.24 824,224 878,252 C912.03,269.65 950.21,291.98 974.65,306.61 " fill="none" id="C_0000000197&lt;-C_0000000181" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="699.05,165.94,702.847,172.0705,709.9663,170.9235,706.1693,164.793,699.05,165.94" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M713.07,172.33 C764.72,195.97 824.69,224.35 878,252 C912.03,269.65 950.21,291.98 974.65,306.61 " fill="none" id="C_0000303025561016882526&lt;-C_0001662349735899726224" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="701.15,166.9,704.947,173.0305,712.0663,171.8835,708.2693,165.753,701.15,166.9" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="915" cy="261.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="15" x="922" y="265.0669">ns</text>
<path d="M711.69,160.29 C781.35,185.63 869.16,218.89 946,252 C986.21,269.32 1031.45,291.83 1060.31,306.58 " fill="none" id="C_0000000197&lt;-C_0000000185" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="699.35,155.81,703.6272,161.6156,710.6314,159.9003,706.3541,154.0947,699.35,155.81" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M713.66,161.01 C783,186.26 869.88,219.2 946,252 C986.21,269.32 1031.45,291.83 1060.31,306.58 " fill="none" id="C_0000303025561016882526&lt;-C_0001963145075481599858" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="701.37,156.54,705.6494,162.344,712.6529,160.6261,708.3735,154.8221,701.37,156.54" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="989" cy="261.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="15" x="996" y="265.0669">ns</text>
</g>

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 56 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -2,7 +2,7 @@
## Config
```yaml
compilation_database_dir: ..
output_directory: puml
output_directory: diagrams
diagrams:
t00007_class:
type: class
@@ -22,14 +22,11 @@ File t00007.cc
namespace clanguml {
namespace t00007 {
class A {
};
class A { };
class B {
};
class B { };
class C {
};
class C { };
class R {
public:
@@ -37,9 +34,174 @@ public:
std::shared_ptr<B> b;
std::weak_ptr<C> c;
};
}
}
} // namespace t00007
} // namespace clanguml
```
## Generated UML diagrams
## Generated PlantUML diagrams
![t00007_class](./t00007_class.svg "Smart pointers")
## Generated Mermaid diagrams
![t00007_class](./t00007_class_mermaid.svg "Smart pointers")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00007::A",
"id": "98876622534017019",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "A",
"namespace": "clanguml::t00007",
"source_location": {
"column": 7,
"file": "../../tests/t00007/t00007.cc",
"line": 5,
"translation_unit": "../../tests/t00007/t00007.cc"
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00007::B",
"id": "696381312773707784",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "B",
"namespace": "clanguml::t00007",
"source_location": {
"column": 7,
"file": "../../tests/t00007/t00007.cc",
"line": 7,
"translation_unit": "../../tests/t00007/t00007.cc"
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00007::C",
"id": "972031178679364068",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "C",
"namespace": "clanguml::t00007",
"source_location": {
"column": 7,
"file": "../../tests/t00007/t00007.cc",
"line": 9,
"translation_unit": "../../tests/t00007/t00007.cc"
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00007::R",
"id": "66905874721300157",
"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": 24,
"file": "../../tests/t00007/t00007.cc",
"line": 13,
"translation_unit": "../../tests/t00007/t00007.cc"
},
"type": "std::unique_ptr<A>"
},
{
"access": "public",
"is_static": false,
"name": "b",
"source_location": {
"column": 24,
"file": "../../tests/t00007/t00007.cc",
"line": 14,
"translation_unit": "../../tests/t00007/t00007.cc"
},
"type": "std::shared_ptr<B>"
},
{
"access": "public",
"is_static": false,
"name": "c",
"source_location": {
"column": 22,
"file": "../../tests/t00007/t00007.cc",
"line": 15,
"translation_unit": "../../tests/t00007/t00007.cc"
},
"type": "std::weak_ptr<C>"
}
],
"methods": [],
"name": "R",
"namespace": "clanguml::t00007",
"source_location": {
"column": 7,
"file": "../../tests/t00007/t00007.cc",
"line": 11,
"translation_unit": "../../tests/t00007/t00007.cc"
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.4.0-32-g701b2c5",
"llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)",
"schema_version": 1
},
"name": "t00007_class",
"relationships": [
{
"access": "public",
"destination": "98876622534017019",
"label": "a",
"source": "66905874721300157",
"type": "aggregation"
},
{
"access": "public",
"destination": "696381312773707784",
"label": "b",
"source": "66905874721300157",
"type": "association"
},
{
"access": "public",
"destination": "972031178679364068",
"label": "c",
"source": "66905874721300157",
"type": "association"
}
],
"using_namespace": "clanguml::t00007"
}
```

View File

@@ -1,6 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="230px" preserveAspectRatio="none" style="width:207px;height:230px;" version="1.1" viewBox="0 0 207 230" width="207px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="fkhk7ip03tpuu" width="300%" x="-1" y="-1">
<filter height="300%" id="f13kc09vid4uy" width="300%" x="-1" y="-1">
<feGaussianBlur result="blurOut" stdDeviation="2.0"/>
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
@@ -9,66 +9,66 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L5" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L5" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkhk7ip03tpuu)" height="48" id="C_0000000298" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="171"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L5" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L5" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f13kc09vid4uy)" height="48" id="C_0000098876622534017019" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="171"/>
<ellipse cx="21" cy="187" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,192.6406 Q23.3906,192.9375 22.75,193.0781 Q22.1094,193.2344 21.4063,193.2344 Q18.9063,193.2344 17.5781,191.5938 Q16.2656,189.9375 16.2656,186.8125 Q16.2656,183.6875 17.5781,182.0313 Q18.9063,180.375 21.4063,180.375 Q22.1094,180.375 22.75,180.5313 Q23.4063,180.6875 23.9688,180.9844 L23.9688,183.7031 Q23.3438,183.125 22.75,182.8594 Q22.1563,182.5781 21.5313,182.5781 Q20.1875,182.5781 19.5,183.6563 Q18.8125,184.7188 18.8125,186.8125 Q18.8125,188.9063 19.5,189.9844 Q20.1875,191.0469 21.5313,191.0469 Q22.1563,191.0469 22.75,190.7813 Q23.3438,190.5 23.9688,189.9219 L23.9688,192.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="35" y="191.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="45" y1="203" y2="203"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="45" y1="211" y2="211"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L8" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L8" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkhk7ip03tpuu)" height="48" id="C_0000000302" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="81" y="171"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L7" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L7" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f13kc09vid4uy)" height="48" id="C_0000696381312773707784" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="81" y="171"/>
<ellipse cx="96" cy="187" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M98.9688,192.6406 Q98.3906,192.9375 97.75,193.0781 Q97.1094,193.2344 96.4063,193.2344 Q93.9063,193.2344 92.5781,191.5938 Q91.2656,189.9375 91.2656,186.8125 Q91.2656,183.6875 92.5781,182.0313 Q93.9063,180.375 96.4063,180.375 Q97.1094,180.375 97.75,180.5313 Q98.4063,180.6875 98.9688,180.9844 L98.9688,183.7031 Q98.3438,183.125 97.75,182.8594 Q97.1563,182.5781 96.5313,182.5781 Q95.1875,182.5781 94.5,183.6563 Q93.8125,184.7188 93.8125,186.8125 Q93.8125,188.9063 94.5,189.9844 Q95.1875,191.0469 96.5313,191.0469 Q97.1563,191.0469 97.75,190.7813 Q98.3438,190.5 98.9688,189.9219 L98.9688,192.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="110" y="191.1543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="82" x2="120" y1="203" y2="203"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="82" x2="120" y1="211" y2="211"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L11" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L11" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkhk7ip03tpuu)" height="48" id="C_0000000306" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="156" y="171"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L9" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L9" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f13kc09vid4uy)" height="48" id="C_0000972031178679364068" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="156" y="171"/>
<ellipse cx="171" cy="187" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M173.9688,192.6406 Q173.3906,192.9375 172.75,193.0781 Q172.1094,193.2344 171.4063,193.2344 Q168.9063,193.2344 167.5781,191.5938 Q166.2656,189.9375 166.2656,186.8125 Q166.2656,183.6875 167.5781,182.0313 Q168.9063,180.375 171.4063,180.375 Q172.1094,180.375 172.75,180.5313 Q173.4063,180.6875 173.9688,180.9844 L173.9688,183.7031 Q173.3438,183.125 172.75,182.8594 Q172.1563,182.5781 171.5313,182.5781 Q170.1875,182.5781 169.5,183.6563 Q168.8125,184.7188 168.8125,186.8125 Q168.8125,188.9063 169.5,189.9844 Q170.1875,191.0469 171.5313,191.0469 Q172.1563,191.0469 172.75,190.7813 Q173.3438,190.5 173.9688,189.9219 L173.9688,192.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="185" y="191.1543">C</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="157" x2="195" y1="203" y2="203"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="157" x2="195" y1="211" y2="211"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L14" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L14" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkhk7ip03tpuu)" height="86.4141" id="C_0000000310" style="stroke: #A80036; stroke-width: 1.5;" width="159" x="21.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L11" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L11" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f13kc09vid4uy)" height="86.4141" id="C_0000066905874721300157" style="stroke: #A80036; stroke-width: 1.5;" width="159" x="21.5" y="8"/>
<ellipse cx="92.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M95.7188,29.6406 Q95.1406,29.9375 94.5,30.0781 Q93.8594,30.2344 93.1563,30.2344 Q90.6563,30.2344 89.3281,28.5938 Q88.0156,26.9375 88.0156,23.8125 Q88.0156,20.6875 89.3281,19.0313 Q90.6563,17.375 93.1563,17.375 Q93.8594,17.375 94.5,17.5313 Q95.1563,17.6875 95.7188,17.9844 L95.7188,20.7031 Q95.0938,20.125 94.5,19.8594 Q93.9063,19.5781 93.2813,19.5781 Q91.9375,19.5781 91.25,20.6563 Q90.5625,21.7188 90.5625,23.8125 Q90.5625,25.9063 91.25,26.9844 Q91.9375,28.0469 93.2813,28.0469 Q93.9063,28.0469 94.5,27.7813 Q95.0938,27.5 95.7188,26.9219 L95.7188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="113.25" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="22.5" x2="179.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="22.5" x2="179.5" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L16" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L16" xlink:show="new" xlink:title="a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="27.5" y="46"/>
<ellipse cx="32.5" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L13" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L13" xlink:show="new" xlink:title="a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="27.5" y="54"/>
<ellipse cx="32.5" cy="59" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L16" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L16" xlink:show="new" xlink:title="a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="130" x="41.5" y="54.2104">a : std::unique_ptr&lt;A&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L13" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L13" xlink:show="new" xlink:title="a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="130" x="41.5" y="62.2104">a : std::unique_ptr&lt;A&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L17" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L17" xlink:show="new" xlink:title="b" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="27.5" y="58.8047"/>
<ellipse cx="32.5" cy="63.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L14" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L14" xlink:show="new" xlink:title="b" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="27.5" y="66.8047"/>
<ellipse cx="32.5" cy="71.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L17" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L17" xlink:show="new" xlink:title="b" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="133" x="41.5" y="67.0151">b : std::shared_ptr&lt;B&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L14" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L14" xlink:show="new" xlink:title="b" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="133" x="41.5" y="75.0151">b : std::shared_ptr&lt;B&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L18" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L18" xlink:show="new" xlink:title="c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="27.5" y="71.6094"/>
<ellipse cx="32.5" cy="76.6094" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L15" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L15" xlink:show="new" xlink:title="c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="27.5" y="79.6094"/>
<ellipse cx="32.5" cy="84.6094" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L18" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00007/t00007.cc#L18" xlink:show="new" xlink:title="c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="121" x="41.5" y="79.8198">c : std::weak_ptr&lt;C&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L15" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L15" xlink:show="new" xlink:title="c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="121" x="41.5" y="87.8198">c : std::weak_ptr&lt;C&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="22.5" x2="179.5" y1="86.4141" y2="86.4141"/>
<path d="M72.48,106 C60.66,128.37 47.58,153.14 38.31,170.69 " fill="none" id="C_0000000310&lt;-C_0000000298" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M72.48,106 C60.66,128.37 47.58,153.14 38.31,170.69 " fill="none" id="C_0000066905874721300157&lt;-C_0000098876622534017019" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="78.7,94.22,72.3597,97.6552,73.092,104.829,79.4323,101.3938,78.7,94.22" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="19" x="62" y="137.0669">+a</text>
<path d="M101,94.22 C101,117.28 101,145.22 101,165.66 " fill="none" id="C_0000000310-&gt;C_0000000302" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M101,94.22 C101,117.28 101,145.22 101,165.66 " fill="none" id="C_0000066905874721300157-&gt;C_0000696381312773707784" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="101,170.69,105,161.69,101,165.69,97,161.69,101,170.69" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="19" x="102" y="137.0669">+b</text>
<path d="M123.3,94.22 C135.58,117.48 150.49,145.69 161.31,166.18 " fill="none" id="C_0000000310-&gt;C_0000000306" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M123.3,94.22 C135.58,117.48 150.49,145.69 161.31,166.18 " fill="none" id="C_0000066905874721300157-&gt;C_0000972031178679364068" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="163.69,170.69,163.0039,160.8651,161.346,166.2735,155.9375,164.6155,163.69,170.69" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="18" x="148" y="137.0669">+c</text>
</g>

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,187 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" aria-roledescription="classDiagram" role="graphics-document document" viewBox="0 0 198.671875 264" style="max-width: 198.672px; background-color: white;" width="198.671875" id="my-svg">
<style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#my-svg g.classGroup text .title{font-weight:bolder;}#my-svg .nodeLabel,#my-svg .edgeLabel{color:#131300;}#my-svg .edgeLabel .label rect{fill:#ECECFF;}#my-svg .label text{fill:#131300;}#my-svg .edgeLabel .label span{background:#ECECFF;}#my-svg .classTitle{font-weight:bolder;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .divider{stroke:#9370DB;stroke-width:1;}#my-svg g.clickable{cursor:pointer;}#my-svg g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#my-svg g.classGroup line{stroke:#9370DB;stroke-width:1;}#my-svg .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#my-svg .classLabel .label{fill:#9370DB;font-size:10px;}#my-svg .relation{stroke:#333333;stroke-width:1;fill:none;}#my-svg .dashed-line{stroke-dasharray:3;}#my-svg .dotted-line{stroke-dasharray:1 2;}#my-svg #compositionStart,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #compositionEnd,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionStart,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionEnd,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationStart,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationEnd,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopStart,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopEnd,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg .edgeTerminals{font-size:11px;}#my-svg .classTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style>
<g>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker aggregation classDiagram" id="classDiagram-aggregationStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker aggregation classDiagram" id="classDiagram-aggregationEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker extension classDiagram" id="classDiagram-extensionStart">
<path d="M 1,7 L18,13 V 1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker extension classDiagram" id="classDiagram-extensionEnd">
<path d="M 1,1 V 13 L18,7 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker composition classDiagram" id="classDiagram-compositionStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker composition classDiagram" id="classDiagram-compositionEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker dependency classDiagram" id="classDiagram-dependencyStart">
<path d="M 5,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker dependency classDiagram" id="classDiagram-dependencyEnd">
<path d="M 18,7 L9,13 L14,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker lollipop classDiagram" id="classDiagram-lollipopStart">
<circle r="6" cy="7" cx="6" fill="white" stroke="black"/>
</marker>
</defs>
<g class="root">
<g class="clusters"/>
<g class="edgePaths">
<path marker-start="url(#classDiagram-aggregationStart)" style="fill:none" class="edge-pattern-solid relation" id="id1" d="M50.03129090314136,131L45.488315335951135,136.66666666666666C40.94533976876091,142.33333333333334,31.85938863438045,153.66666666666666,27.316413067190226,165C22.7734375,176.33333333333334,22.7734375,187.66666666666666,22.7734375,193.33333333333334L22.7734375,199"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id2" d="M99.3359375,131L99.3359375,136.66666666666666C99.3359375,142.33333333333334,99.3359375,153.66666666666666,99.3359375,165C99.3359375,176.33333333333334,99.3359375,187.66666666666666,99.3359375,193.33333333333334L99.3359375,199"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id3" d="M148.64058409685865,131L153.1835596640489,136.66666666666666C157.7265352312391,142.33333333333334,166.81248636561955,153.66666666666666,171.3554619328098,165C175.8984375,176.33333333333334,175.8984375,187.66666666666666,175.8984375,193.33333333333334L175.8984375,199"/>
</g>
<g class="edgeLabels">
<g transform="translate(22.7734375, 165)" class="edgeLabel">
<g transform="translate(-9.125, -9)" class="label">
<foreignObject height="18" width="18.25">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+a</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(99.3359375, 165)" class="edgeLabel">
<g transform="translate(-9.125, -9)" class="label">
<foreignObject height="18" width="18.25">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+b</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(175.8984375, 165)" class="edgeLabel">
<g transform="translate(-8.671875, -9)" class="label">
<foreignObject height="18" width="17.34375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+c</span>
</span>
</div>
</foreignObject>
</g>
</g>
</g>
<g class="nodes">
<a transform="translate(22.7734375, 227.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L5">
<g title="A" id="classId-C_0000098876622534017019-0" class="node default clickable">
<rect height="57" width="26.5625" y="-28.5" x="-13.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.28125" x1="-13.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.28125" x1="-13.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -21)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(99.3359375, 227.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L7">
<g title="B" id="classId-C_0000696381312773707784-1" class="node default clickable">
<rect height="57" width="26.5625" y="-28.5" x="-13.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.28125" x1="-13.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.28125" x1="-13.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -21)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">B</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(175.8984375, 227.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L9">
<g title="C" id="classId-C_0000972031178679364068-2" class="node default clickable">
<rect height="57" width="26.5625" y="-28.5" x="-13.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.28125" x1="-13.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.28125" x1="-13.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -21)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">C</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(99.3359375, 69.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00007/t00007.cc#L11">
<g title="R" id="classId-C_0000066905874721300157-3" class="node default clickable">
<rect height="123" width="182.671875" y="-61.5" x="-91.3359375" class="outer title-state"/>
<line y2="-31.5" y1="-31.5" x2="91.3359375" x1="-91.3359375" class="divider"/>
<line y2="50.5" y1="50.5" x2="91.3359375" x1="-91.3359375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -54)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">R</span>
</div>
</foreignObject>
<foreignObject transform="translate( -83.8359375, -20)" height="18" width="166.796875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+a : std::unique_ptr&lt;A&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -83.8359375, 2)" height="18" width="167.671875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+b : std::shared_ptr&lt;B&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -83.8359375, 24)" height="18" width="156.078125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+c : std::weak_ptr&lt;C&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="390px" preserveAspectRatio="none" style="width:612px;height:390px;" version="1.1" viewBox="0 0 612 390" width="612px" zoomAndPan="magnify">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="403px" preserveAspectRatio="none" style="width:1039px;height:403px;" version="1.1" viewBox="0 0 1039 403" width="1039px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="fls9vhg1ogm97" width="300%" x="-1" y="-1">
<filter height="300%" id="f1gxnfqgu393bb" width="300%" x="-1" y="-1">
<feGaussianBlur result="blurOut" stdDeviation="2.0"/>
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
@@ -9,134 +9,184 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L9" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L9" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fls9vhg1ogm97)" height="124.8281" id="C_0000000334" style="stroke: #A80036; stroke-width: 1.5;" width="161" x="6" y="8"/>
<ellipse cx="37.65" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M40.6188,29.6406 Q40.0406,29.9375 39.4,30.0781 Q38.7594,30.2344 38.0563,30.2344 Q35.5563,30.2344 34.2281,28.5938 Q32.9156,26.9375 32.9156,23.8125 Q32.9156,20.6875 34.2281,19.0313 Q35.5563,17.375 38.0563,17.375 Q38.7594,17.375 39.4,17.5313 Q40.0563,17.6875 40.6188,17.9844 L40.6188,20.7031 Q39.9938,20.125 39.4,19.8594 Q38.8063,19.5781 38.1813,19.5781 Q36.8375,19.5781 36.15,20.6563 Q35.4625,21.7188 35.4625,23.8125 Q35.4625,25.9063 36.15,26.9844 Q36.8375,28.0469 38.1813,28.0469 Q38.8063,28.0469 39.4,27.7813 Q39.9938,27.5 40.6188,26.9219 L40.6188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="55.35" y="28.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="82" x="88" y="5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="80" x="89" y="17.1387">T,P,CMP,int N</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="166" y1="40" y2="40"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L9" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L9" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gxnfqgu393bb)" height="124.8281" id="C_0002293517130897538130" style="stroke: #A80036; stroke-width: 1.5;" width="209" x="6" y="8"/>
<ellipse cx="21" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,29.6406 Q23.3906,29.9375 22.75,30.0781 Q22.1094,30.2344 21.4063,30.2344 Q18.9063,30.2344 17.5781,28.5938 Q16.2656,26.9375 16.2656,23.8125 Q16.2656,20.6875 17.5781,19.0313 Q18.9063,17.375 21.4063,17.375 Q22.1094,17.375 22.75,17.5313 Q23.4063,17.6875 23.9688,17.9844 L23.9688,20.7031 Q23.3438,20.125 22.75,19.8594 Q22.1563,19.5781 21.5313,19.5781 Q20.1875,19.5781 19.5,20.6563 Q18.8125,21.7188 18.8125,23.8125 Q18.8125,25.9063 19.5,26.9844 Q20.1875,28.0469 21.5313,28.0469 Q22.1563,28.0469 22.75,27.7813 Q23.3438,27.5 23.9688,26.9219 L23.9688,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="35" y="28.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="167" x="51" y="5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="165" x="52" y="17.1387">T,P=T,CMP=nullptr,int N=3</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="214" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="214" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L11" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L11" xlink:show="new" xlink:title="value" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="46"/>
<ellipse cx="17" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L17" target="_top" title="comparator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L17" xlink:show="new" xlink:title="comparator" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="54"/>
<ellipse cx="17" cy="59" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L11" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L11" xlink:show="new" xlink:title="value" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="26" y="54.2104">value : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L17" target="_top" title="comparator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L17" xlink:show="new" xlink:title="comparator" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="102" x="26" y="62.2104">comparator : CMP</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L12" target="_top" title="pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L12" xlink:show="new" xlink:title="pointer" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="58.8047"/>
<ellipse cx="17" cy="63.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L15" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L15" xlink:show="new" xlink:title="ints" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="66.8047"/>
<ellipse cx="17" cy="71.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L12" target="_top" title="pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L12" xlink:show="new" xlink:title="pointer" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="65" x="26" y="67.0151">pointer : T*</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L15" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L15" xlink:show="new" xlink:title="ints" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="133" x="26" y="75.0151">ints : std::array&lt;int,N&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L13" target="_top" title="reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L13" xlink:show="new" xlink:title="reference" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="71.6094"/>
<ellipse cx="17" cy="76.6094" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L12" target="_top" title="pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L12" xlink:show="new" xlink:title="pointer" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="79.6094"/>
<ellipse cx="17" cy="84.6094" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L13" target="_top" title="reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L13" xlink:show="new" xlink:title="reference" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="84" x="26" y="79.8198">reference : T&amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L12" target="_top" title="pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L12" xlink:show="new" xlink:title="pointer" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="69" x="26" y="87.8198">pointer : T *</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L14" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L14" xlink:show="new" xlink:title="values" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="84.4141"/>
<ellipse cx="17" cy="89.4141" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L13" target="_top" title="reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L13" xlink:show="new" xlink:title="reference" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="92.4141"/>
<ellipse cx="17" cy="97.4141" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L14" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L14" xlink:show="new" xlink:title="values" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="135" x="26" y="92.6245">values : std::vector&lt;P&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L13" target="_top" title="reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L13" xlink:show="new" xlink:title="reference" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="88" x="26" y="100.6245">reference : T &amp;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L15" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L15" xlink:show="new" xlink:title="ints" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="97.2188"/>
<ellipse cx="17" cy="102.2188" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L11" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L11" xlink:show="new" xlink:title="value" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="105.2188"/>
<ellipse cx="17" cy="110.2188" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L15" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L15" xlink:show="new" xlink:title="ints" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="133" x="26" y="105.4292">ints : std::array&lt;int,N&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L11" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L11" xlink:show="new" xlink:title="value" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="26" y="113.4292">value : T</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L17" target="_top" title="comparator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L17" xlink:show="new" xlink:title="comparator" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="110.0234"/>
<ellipse cx="17" cy="115.0234" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L14" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L14" xlink:show="new" xlink:title="values" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="118.0234"/>
<ellipse cx="17" cy="123.0234" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L17" target="_top" title="comparator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L17" xlink:show="new" xlink:title="comparator" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="102" x="26" y="118.2339">comparator : CMP</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L14" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L14" xlink:show="new" xlink:title="values" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="135" x="26" y="126.2339">values : std::vector&lt;P&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="166" y1="124.8281" y2="124.8281"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L20" target="_top" title="Vector" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L20" xlink:show="new" xlink:title="Vector" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fls9vhg1ogm97)" height="60.8047" id="C_0000000348" style="stroke: #A80036; stroke-width: 1.5;" width="161" x="202" y="40"/>
<ellipse cx="252.25" cy="56" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M255.2188,61.6406 Q254.6406,61.9375 254,62.0781 Q253.3594,62.2344 252.6563,62.2344 Q250.1563,62.2344 248.8281,60.5938 Q247.5156,58.9375 247.5156,55.8125 Q247.5156,52.6875 248.8281,51.0313 Q250.1563,49.375 252.6563,49.375 Q253.3594,49.375 254,49.5313 Q254.6563,49.6875 255.2188,49.9844 L255.2188,52.7031 Q254.5938,52.125 254,51.8594 Q253.4063,51.5781 252.7813,51.5781 Q251.4375,51.5781 250.75,52.6563 Q250.0625,53.7188 250.0625,55.8125 Q250.0625,57.9063 250.75,58.9844 Q251.4375,60.0469 252.7813,60.0469 Q253.4063,60.0469 254,59.7813 Q254.5938,59.5 255.2188,58.9219 L255.2188,61.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="272.75" y="60.1543">Vector</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="357" y="37"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="358" y="49.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="362" y1="72" y2="72"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L20" target="_top" title="Vector" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L20" xlink:show="new" xlink:title="Vector" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gxnfqgu393bb)" height="60.8047" id="C_0001677407014842680311" style="stroke: #A80036; stroke-width: 1.5;" width="161" x="250" y="40"/>
<ellipse cx="300.25" cy="56" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M303.2188,61.6406 Q302.6406,61.9375 302,62.0781 Q301.3594,62.2344 300.6563,62.2344 Q298.1563,62.2344 296.8281,60.5938 Q295.5156,58.9375 295.5156,55.8125 Q295.5156,52.6875 296.8281,51.0313 Q298.1563,49.375 300.6563,49.375 Q301.3594,49.375 302,49.5313 Q302.6563,49.6875 303.2188,49.9844 L303.2188,52.7031 Q302.5938,52.125 302,51.8594 Q301.4063,51.5781 300.7813,51.5781 Q299.4375,51.5781 298.75,52.6563 Q298.0625,53.7188 298.0625,55.8125 Q298.0625,57.9063 298.75,58.9844 Q299.4375,60.0469 300.7813,60.0469 Q301.4063,60.0469 302,59.7813 Q302.5938,59.5 303.2188,58.9219 L303.2188,61.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="320.75" y="60.1543">Vector</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="405" y="37"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="406" y="49.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="251" x2="410" y1="72" y2="72"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="251" x2="410" y1="80" y2="80"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L21" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L21" xlink:show="new" xlink:title="values" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="208" y="78"/>
<ellipse cx="213" cy="83" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L21" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L21" xlink:show="new" xlink:title="values" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="256" y="86"/>
<ellipse cx="261" cy="91" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L21" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L21" xlink:show="new" xlink:title="values" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="135" x="222" y="86.2104">values : std::vector&lt;T&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L21" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L21" xlink:show="new" xlink:title="values" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="135" x="270" y="94.2104">values : std::vector&lt;T&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="203" x2="362" y1="92.8047" y2="92.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L24" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L24" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fls9vhg1ogm97)" height="60.8047" id="C_0000000356" style="stroke: #A80036; stroke-width: 1.5;" width="177" x="411" y="319"/>
<ellipse cx="469.75" cy="335" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M472.7188,340.6406 Q472.1406,340.9375 471.5,341.0781 Q470.8594,341.2344 470.1563,341.2344 Q467.6563,341.2344 466.3281,339.5938 Q465.0156,337.9375 465.0156,334.8125 Q465.0156,331.6875 466.3281,330.0313 Q467.6563,328.375 470.1563,328.375 Q470.8594,328.375 471.5,328.5313 Q472.1563,328.6875 472.7188,328.9844 L472.7188,331.7031 Q472.0938,331.125 471.5,330.8594 Q470.9063,330.5781 470.2813,330.5781 Q468.9375,330.5781 468.25,331.6563 Q467.5625,332.7188 467.5625,334.8125 Q467.5625,336.9063 468.25,337.9844 Q468.9375,339.0469 470.2813,339.0469 Q470.9063,339.0469 471.5,338.7813 Q472.0938,338.5 472.7188,337.9219 L472.7188,340.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="490.25" y="339.1543">B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="41" x="550" y="316"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="39" x="551" y="328.1387">T,C&lt;&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="412" x2="587" y1="351" y2="351"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L24" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L24" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gxnfqgu393bb)" height="60.8047" id="C_0001968575752686868237" style="stroke: #A80036; stroke-width: 1.5;" width="177" x="490" y="332"/>
<ellipse cx="548.75" cy="348" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M551.7188,353.6406 Q551.1406,353.9375 550.5,354.0781 Q549.8594,354.2344 549.1563,354.2344 Q546.6563,354.2344 545.3281,352.5938 Q544.0156,350.9375 544.0156,347.8125 Q544.0156,344.6875 545.3281,343.0313 Q546.6563,341.375 549.1563,341.375 Q549.8594,341.375 550.5,341.5313 Q551.1563,341.6875 551.7188,341.9844 L551.7188,344.7031 Q551.0938,344.125 550.5,343.8594 Q549.9063,343.5781 549.2813,343.5781 Q547.9375,343.5781 547.25,344.6563 Q546.5625,345.7188 546.5625,347.8125 Q546.5625,349.9063 547.25,350.9844 Q547.9375,352.0469 549.2813,352.0469 Q549.9063,352.0469 550.5,351.7813 Q551.0938,351.5 551.7188,350.9219 L551.7188,353.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="569.25" y="352.1543">B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="41" x="629" y="329"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="39" x="630" y="341.1387">T,C&lt;&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="491" x2="666" y1="364" y2="364"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="491" x2="666" y1="372" y2="372"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L25" target="_top" title="template_template" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L25" xlink:show="new" xlink:title="template_template" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="417" y="357"/>
<ellipse cx="422" cy="362" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L25" target="_top" title="template_template" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L25" xlink:show="new" xlink:title="template_template" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="496" y="378"/>
<ellipse cx="501" cy="383" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L25" target="_top" title="template_template" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L25" xlink:show="new" xlink:title="template_template" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="151" x="431" y="365.2104">template_template : C&lt;T&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L25" target="_top" title="template_template" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L25" xlink:show="new" xlink:title="template_template" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="151" x="510" y="386.2104">template_template : C&lt;T&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="412" x2="587" y1="371.8047" y2="371.8047"/>
<rect fill="#FEFECE" filter="url(#fls9vhg1ogm97)" height="48" id="C_0000000361" style="stroke: #A80036; stroke-width: 1.5;" width="105" x="447" y="210"/>
<ellipse cx="462" cy="226" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M464.9688,231.6406 Q464.3906,231.9375 463.75,232.0781 Q463.1094,232.2344 462.4063,232.2344 Q459.9063,232.2344 458.5781,230.5938 Q457.2656,228.9375 457.2656,225.8125 Q457.2656,222.6875 458.5781,221.0313 Q459.9063,219.375 462.4063,219.375 Q463.1094,219.375 463.75,219.5313 Q464.4063,219.6875 464.9688,219.9844 L464.9688,222.7031 Q464.3438,222.125 463.75,221.8594 Q463.1563,221.5781 462.5313,221.5781 Q461.1875,221.5781 460.5,222.6563 Q459.8125,223.7188 459.8125,225.8125 Q459.8125,227.9063 460.5,228.9844 Q461.1875,230.0469 462.5313,230.0469 Q463.1563,230.0469 463.75,229.7813 Q464.3438,229.5 464.9688,228.9219 L464.9688,231.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="476" y="230.1543">B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="63" x="492" y="207"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="61" x="493" y="219.1387">int,Vector</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="448" x2="551" y1="242" y2="242"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="448" x2="551" y1="250" y2="250"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L28" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L28" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fls9vhg1ogm97)" height="86.4141" id="C_0000000360" style="stroke: #A80036; stroke-width: 1.5;" width="203" x="398" y="27.5"/>
<ellipse cx="490.75" cy="43.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M493.7188,49.1406 Q493.1406,49.4375 492.5,49.5781 Q491.8594,49.7344 491.1563,49.7344 Q488.6563,49.7344 487.3281,48.0938 Q486.0156,46.4375 486.0156,43.3125 Q486.0156,40.1875 487.3281,38.5313 Q488.6563,36.875 491.1563,36.875 Q491.8594,36.875 492.5,37.0313 Q493.1563,37.1875 493.7188,37.4844 L493.7188,40.2031 Q493.0938,39.625 492.5,39.3594 Q491.9063,39.0781 491.2813,39.0781 Q489.9375,39.0781 489.25,40.1563 Q488.5625,41.2188 488.5625,43.3125 Q488.5625,45.4063 489.25,46.4844 Q489.9375,47.5469 491.2813,47.5469 Q491.9063,47.5469 492.5,47.2813 Q493.0938,47 493.7188,46.4219 L493.7188,49.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="511.25" y="47.6543">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="399" x2="600" y1="59.5" y2="59.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L24" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L24" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gxnfqgu393bb)" height="48" id="C_0001449136415707203971" style="stroke: #A80036; stroke-width: 1.5;" width="105" x="526" y="216.5"/>
<ellipse cx="541" cy="232.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M543.9688,238.1406 Q543.3906,238.4375 542.75,238.5781 Q542.1094,238.7344 541.4063,238.7344 Q538.9063,238.7344 537.5781,237.0938 Q536.2656,235.4375 536.2656,232.3125 Q536.2656,229.1875 537.5781,227.5313 Q538.9063,225.875 541.4063,225.875 Q542.1094,225.875 542.75,226.0313 Q543.4063,226.1875 543.9688,226.4844 L543.9688,229.2031 Q543.3438,228.625 542.75,228.3594 Q542.1563,228.0781 541.5313,228.0781 Q540.1875,228.0781 539.5,229.1563 Q538.8125,230.2188 538.8125,232.3125 Q538.8125,234.4063 539.5,235.4844 Q540.1875,236.5469 541.5313,236.5469 Q542.1563,236.5469 542.75,236.2813 Q543.3438,236 543.9688,235.4219 L543.9688,238.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="555" y="236.6543">B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="63" x="571" y="213.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="61" x="572" y="225.6387">int,Vector</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="527" x2="630" y1="248.5" y2="248.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="527" x2="630" y1="256.5" y2="256.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L29" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L29" xlink:show="new" xlink:title="ints" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="404" y="65.5"/>
<ellipse cx="409" cy="70.5" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L28" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L28" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gxnfqgu393bb)" height="94.4141" id="C_0001562396858816419857" style="stroke: #A80036; stroke-width: 1.5;" width="265" x="446" y="23.5"/>
<ellipse cx="569.75" cy="39.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M572.7188,45.1406 Q572.1406,45.4375 571.5,45.5781 Q570.8594,45.7344 570.1563,45.7344 Q567.6563,45.7344 566.3281,44.0938 Q565.0156,42.4375 565.0156,39.3125 Q565.0156,36.1875 566.3281,34.5313 Q567.6563,32.875 570.1563,32.875 Q570.8594,32.875 571.5,33.0313 Q572.1563,33.1875 572.7188,33.4844 L572.7188,36.2031 Q572.0938,35.625 571.5,35.3594 Q570.9063,35.0781 570.2813,35.0781 Q568.9375,35.0781 568.25,36.1563 Q567.5625,37.2188 567.5625,39.3125 Q567.5625,41.4063 568.25,42.4844 Q568.9375,43.5469 570.2813,43.5469 Q570.9063,43.5469 571.5,43.2813 Q572.0938,43 572.7188,42.4219 L572.7188,45.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="590.25" y="43.6543">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="447" x2="710" y1="55.5" y2="55.5"/>
<ellipse cx="457" cy="66.5" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="239" x="466" y="69.7104">D&lt;Items...&gt;(std::tuple&lt;Items...&gt; *) : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="447" x2="710" y1="76.3047" y2="76.3047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L29" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L29" xlink:show="new" xlink:title="ints" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="113" x="418" y="73.7104">ints : B&lt;int,Vector&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L33" target="_top" title="add" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L33" xlink:show="new" xlink:title="add" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="452" y="82.3047"/>
<ellipse cx="457" cy="87.3047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="399" x2="600" y1="80.3047" y2="80.3047"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L31" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L31" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="404" y="86.3047"/>
<ellipse cx="409" cy="91.3047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L33" target="_top" title="add" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L33" xlink:show="new" xlink:title="add" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="85" x="466" y="90.5151">add(int i) : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L31" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L31" xlink:show="new" xlink:title="D" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="177" x="418" y="94.5151">D(std::tuple&lt;Items...&gt;* ) : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="447" x2="710" y1="97.1094" y2="97.1094"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L29" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L29" xlink:show="new" xlink:title="ints" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="452" y="103.1094"/>
<ellipse cx="457" cy="108.1094" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L33" target="_top" title="add" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L33" xlink:show="new" xlink:title="add" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="404" y="99.1094"/>
<ellipse cx="409" cy="104.1094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L29" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L29" xlink:show="new" xlink:title="ints" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="113" x="466" y="111.3198">ints : B&lt;int,Vector&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L33" target="_top" title="add" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00008/t00008.cc#L33" xlink:show="new" xlink:title="add" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="85" x="418" y="107.3198">add(int i) : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L36" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L36" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gxnfqgu393bb)" height="48" id="C_0001787658457052431115" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="823.5" y="338.5"/>
<ellipse cx="838.5" cy="354.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M841.4688,360.1406 Q840.8906,360.4375 840.25,360.5781 Q839.6094,360.7344 838.9063,360.7344 Q836.4063,360.7344 835.0781,359.0938 Q833.7656,357.4375 833.7656,354.3125 Q833.7656,351.1875 835.0781,349.5313 Q836.4063,347.875 838.9063,347.875 Q839.6094,347.875 840.25,348.0313 Q840.9063,348.1875 841.4688,348.4844 L841.4688,351.2031 Q840.8438,350.625 840.25,350.3594 Q839.6563,350.0781 839.0313,350.0781 Q837.6875,350.0781 837,351.1563 Q836.3125,352.2188 836.3125,354.3125 Q836.3125,356.4063 837,357.4844 Q837.6875,358.5469 839.0313,358.5469 Q839.6563,358.5469 840.25,358.2813 Q840.8438,358 841.4688,357.4219 L841.4688,360.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="852.5" y="358.6543">E</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="824.5" x2="862.5" y1="370.5" y2="370.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="824.5" x2="862.5" y1="378.5" y2="378.5"/>
</a>
<path d="M499.5,258.24 C499.5,269.87 499.5,284.42 499.5,298.43 " fill="none" id="C_0000000361-&gt;C_0000000356" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="506.5,298.81,499.5,318.81,492.5,298.81,506.5,298.81" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M499.5,126.57 C499.5,154.93 499.5,188.01 499.5,209.67 " fill="none" id="C_0000000360&lt;-C_0000000361" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="499.5,113.51,495.5,119.51,499.5,125.51,503.5,119.51,499.5,113.51" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="505.5" cy="172.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="512.5" y="176.0669">ints</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L37" target="_top" title="E##nested_template" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L37" xlink:show="new" xlink:title="E##nested_template" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gxnfqgu393bb)" height="60.8047" id="C_0001549419203490064906" style="stroke: #A80036; stroke-width: 1.5;" width="173" x="852" y="210"/>
<ellipse cx="867" cy="226" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M869.9688,231.6406 Q869.3906,231.9375 868.75,232.0781 Q868.1094,232.2344 867.4063,232.2344 Q864.9063,232.2344 863.5781,230.5938 Q862.2656,228.9375 862.2656,225.8125 Q862.2656,222.6875 863.5781,221.0313 Q864.9063,219.375 867.4063,219.375 Q868.1094,219.375 868.75,219.5313 Q869.4063,219.6875 869.9688,219.9844 L869.9688,222.7031 Q869.3438,222.125 868.75,221.8594 Q868.1563,221.5781 867.5313,221.5781 Q866.1875,221.5781 865.5,222.6563 Q864.8125,223.7188 864.8125,225.8125 Q864.8125,227.9063 865.5,228.9844 Q866.1875,230.0469 867.5313,230.0469 Q868.1563,230.0469 868.75,229.7813 Q869.3438,229.5 869.9688,228.9219 L869.9688,231.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="122" x="881" y="230.1543">E::nested_template</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="17" x="1011" y="207"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="15" x="1012" y="219.1387">ET</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="853" x2="1024" y1="242" y2="242"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L40" target="_top" title="get" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L40" xlink:show="new" xlink:title="get" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="858" y="248"/>
<ellipse cx="863" cy="253" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L40" target="_top" title="get" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L40" xlink:show="new" xlink:title="get" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="98" x="872" y="256.2104">get(ET * d) : DT *</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="853" x2="1024" y1="262.8047" y2="262.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L44" target="_top" title="E##nested_template" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L44" xlink:show="new" xlink:title="E##nested_template" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1gxnfqgu393bb)" height="60.8047" id="C_0000033637089897037832" style="stroke: #A80036; stroke-width: 1.5;" width="194" x="746.5" y="40"/>
<ellipse cx="765.1" cy="56" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M768.0688,61.6406 Q767.4906,61.9375 766.85,62.0781 Q766.2094,62.2344 765.5063,62.2344 Q763.0063,62.2344 761.6781,60.5938 Q760.3656,58.9375 760.3656,55.8125 Q760.3656,52.6875 761.6781,51.0313 Q763.0063,49.375 765.5063,49.375 Q766.2094,49.375 766.85,49.5313 Q767.5063,49.6875 768.0688,49.9844 L768.0688,52.7031 Q767.4438,52.125 766.85,51.8594 Q766.2563,51.5781 765.6313,51.5781 Q764.2875,51.5781 763.6,52.6563 Q762.9125,53.7188 762.9125,55.8125 Q762.9125,57.9063 763.6,58.9844 Q764.2875,60.0469 765.6313,60.0469 Q766.2563,60.0469 766.85,59.7813 Q767.4438,59.5 768.0688,58.9219 L768.0688,61.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="122" x="779.9" y="60.1543">E::nested_template</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="30" x="913.5" y="37"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="28" x="914.5" y="49.1387">char</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="747.5" x2="939.5" y1="72" y2="72"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L47" target="_top" title="getDecl" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L47" xlink:show="new" xlink:title="getDecl" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="752.5" y="78"/>
<ellipse cx="757.5" cy="83" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L47" target="_top" title="getDecl" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L47" xlink:show="new" xlink:title="getDecl" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="168" x="766.5" y="86.2104">getDecl(char * c) : DeclType *</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="747.5" x2="939.5" y1="92.8047" y2="92.8047"/>
<path d="M578.5,264.64 C578.5,277.97 578.5,295.27 578.5,311.55 " fill="none" id="C_0001449136415707203971-&gt;C_0001968575752686868237" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="585.5,311.61,578.5,331.61,571.5,311.61,585.5,311.61" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M578.5,131.05 C578.5,160.58 578.5,194.53 578.5,216.46 " fill="none" id="C_0001562396858816419857&lt;-C_0001449136415707203971" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="578.5,117.85,574.5,123.85,578.5,129.85,582.5,123.85,578.5,117.85" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="584.5" cy="172.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="591.5" y="176.0669">ints</text>
<path d="M915.02,271.16 C901.78,287.89 885.16,308.88 871.28,326.42 " fill="none" id="C_0001549419203490064906-&gt;C_0001787658457052431115" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="866.9278" cy="331.9193" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="871.8955" x2="861.96" y1="325.6487" y2="338.19"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="873.1984" x2="860.6571" y1="336.8871" y2="326.9516"/>
<path d="M840.4,101.25 C836.74,140.24 831.51,210.75 834.5,271 C835.36,288.27 837.13,307.32 838.87,323.47 " fill="none" id="C_0000033637089897037832-&gt;C_0001787658457052431115" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="839.6807" cy="330.5307" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="838.7813" x2="840.58" y1="322.5814" y2="338.48"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="847.6299" x2="831.7314" y1="329.6314" y2="331.4301"/>
<path d="M860.27,101.15 C874.53,126.38 895.29,163.08 911.83,192.34 " fill="none" id="C_0000033637089897037832-&gt;C_0001549419203490064906" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="917.99,189.01,921.74,209.87,905.8,195.9,917.99,189.01" style="stroke: #A80036; stroke-width: 1.0;"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -0,0 +1,337 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" aria-roledescription="classDiagram" role="graphics-document document" viewBox="0 0 1075.48046875 481" style="max-width: 1075.48px; background-color: white;" width="1075.48046875" id="my-svg">
<style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#my-svg g.classGroup text .title{font-weight:bolder;}#my-svg .nodeLabel,#my-svg .edgeLabel{color:#131300;}#my-svg .edgeLabel .label rect{fill:#ECECFF;}#my-svg .label text{fill:#131300;}#my-svg .edgeLabel .label span{background:#ECECFF;}#my-svg .classTitle{font-weight:bolder;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .divider{stroke:#9370DB;stroke-width:1;}#my-svg g.clickable{cursor:pointer;}#my-svg g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#my-svg g.classGroup line{stroke:#9370DB;stroke-width:1;}#my-svg .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#my-svg .classLabel .label{fill:#9370DB;font-size:10px;}#my-svg .relation{stroke:#333333;stroke-width:1;fill:none;}#my-svg .dashed-line{stroke-dasharray:3;}#my-svg .dotted-line{stroke-dasharray:1 2;}#my-svg #compositionStart,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #compositionEnd,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionStart,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionEnd,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationStart,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationEnd,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopStart,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopEnd,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg .edgeTerminals{font-size:11px;}#my-svg .classTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style>
<g>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker aggregation classDiagram" id="classDiagram-aggregationStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker aggregation classDiagram" id="classDiagram-aggregationEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker extension classDiagram" id="classDiagram-extensionStart">
<path d="M 1,7 L18,13 V 1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker extension classDiagram" id="classDiagram-extensionEnd">
<path d="M 1,1 V 13 L18,7 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker composition classDiagram" id="classDiagram-compositionStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker composition classDiagram" id="classDiagram-compositionEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker dependency classDiagram" id="classDiagram-dependencyStart">
<path d="M 5,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker dependency classDiagram" id="classDiagram-dependencyEnd">
<path d="M 18,7 L9,13 L14,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker lollipop classDiagram" id="classDiagram-lollipopStart">
<circle r="6" cy="7" cx="6" fill="white" stroke="black"/>
</marker>
</defs>
<g class="root">
<g class="clusters"/>
<g class="edgePaths">
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id1" d="M618.796875,333L618.796875,339C618.796875,345,618.796875,357,618.796875,367.1666666666667C618.796875,377.3333333333333,618.796875,385.6666666666667,618.796875,389.8333333333333L618.796875,394"/>
<path marker-start="url(#classDiagram-aggregationStart)" style="fill:none" class="edge-pattern-solid relation" id="id2" d="M618.796875,164L618.796875,175.16666666666666C618.796875,186.33333333333334,618.796875,208.66666666666666,618.796875,227.33333333333334C618.796875,246,618.796875,261,618.796875,268.5L618.796875,276"/>
<path marker-start="url(#classDiagram-lollipopStart)" style="fill:none" class="edge-pattern-solid relation" id="id3" d="M861.4921875,122.9321591019065L850.1770833333334,140.94346591825544C838.8619791666666,158.95477273460435,816.2317708333334,194.9773863673022,804.9166666666666,225.2386931836511C793.6015625,255.5,793.6015625,280,793.6015625,303C793.6015625,326,793.6015625,347.5,798.8164567183462,362.4166666666667C804.0313509366924,377.3333333333333,814.461139373385,385.6666666666667,819.6760335917312,389.8333333333333L824.8909278100775,394"/>
<path marker-start="url(#classDiagram-lollipopStart)" style="fill:none" class="edge-pattern-solid relation" id="id4" d="M887.1640625,124.18837639324053L897.6998697916666,141.99031366103378C908.2356770833334,159.79225092882703,929.3072916666666,195.39612546441353,939.8430989583334,218.86472939887344C950.37890625,242.33333333333334,950.37890625,253.66666666666666,950.37890625,259.3333333333333L950.37890625,265"/>
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id5" d="M950.37890625,344L950.37890625,348.1666666666667C950.37890625,352.3333333333333,950.37890625,360.6666666666667,945.4660650839793,369C940.5532239179587,377.3333333333333,930.7275415859173,385.6666666666667,925.8147004198967,389.8333333333333L920.901859253876,394"/>
</g>
<g class="edgeLabels">
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(618.796875, 231)" class="edgeLabel">
<g transform="translate(-17.125, -9)" class="label">
<foreignObject height="18" width="34.25">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+ints</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
</g>
<g class="nodes">
<a transform="translate(129.0859375, 102.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L9">
<g title="A" id="classId-C_0002293517130897538130-0" class="node default clickable">
<rect height="189" width="242.171875" y="-94.5" x="-121.0859375" class="outer title-state"/>
<line y2="-64.5" y1="-64.5" x2="121.0859375" x1="-121.0859375" class="divider"/>
<line y2="83.5" y1="83.5" x2="121.0859375" x1="-121.0859375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -113.5859375, -87)" height="18" width="227.171875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A&lt;T,P=T,CMP=nullptr,int N=3&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -113.5859375, -53)" height="18" width="139.15625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+comparator : CMP</span>
</div>
</foreignObject>
<foreignObject transform="translate( -113.5859375, -31)" height="18" width="165.859375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+ints : std::array&lt;int,N&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -113.5859375, -9)" height="18" width="81.375">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-style: italic; display: inline-block; white-space: nowrap;">
<span style="font-style:italic;" class="nodeLabel">+pointer : T </span>
</div>
</foreignObject>
<foreignObject transform="translate( -113.5859375, 13)" height="18" width="114.59375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+reference : T &amp;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -113.5859375, 35)" height="18" width="70.421875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+value : T</span>
</div>
</foreignObject>
<foreignObject transform="translate( -113.5859375, 57)" height="18" width="172.09375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+values : std::vector&lt;P&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(393.2734375, 102.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L20">
<g title="Vector" id="classId-C_0001677407014842680311-1" class="node default clickable">
<rect height="79" width="186.203125" y="-39.5" x="-93.1015625" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="93.1015625" x1="-93.1015625" class="divider"/>
<line y2="28.5" y1="28.5" x2="93.1015625" x1="-93.1015625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -38.6875, -32)" height="18" width="77.375" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">Vector&lt;T&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -85.6015625, 2)" height="18" width="171.203125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+values : std::vector&lt;T&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(618.796875, 433.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L24">
<g title="B" id="classId-C_0001968575752686868237-2" class="node default clickable">
<rect height="79" width="209.328125" y="-39.5" x="-104.6640625" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="104.6640625" x1="-104.6640625" class="divider"/>
<line y2="28.5" y1="28.5" x2="104.6640625" x1="-104.6640625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -36.46875, -32)" height="18" width="72.9375" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">B&lt;T,C&lt;&gt;&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -97.1640625, 2)" height="18" width="194.328125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+template_template : C&lt;T&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(618.796875, 304.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L24">
<g title="B" id="classId-C_0001449136415707203971-3" class="node default clickable">
<rect height="57" width="118.15625" y="-28.5" x="-59.078125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="59.078125" x1="-59.078125" class="divider"/>
<line y2="17.5" y1="17.5" x2="59.078125" x1="-59.078125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -51.578125, -21)" height="18" width="103.15625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">B&lt;int,Vector&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(618.796875, 102.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L28">
<g title="D" id="classId-C_0001562396858816419857-4" class="node default clickable">
<rect height="123" width="164.84375" y="-61.5" x="-82.421875" class="outer title-state"/>
<line y2="-31.5" y1="-31.5" x2="82.421875" x1="-82.421875" class="divider"/>
<line y2="6.5" y1="6.5" x2="82.421875" x1="-82.421875" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -54)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">D</span>
</div>
</foreignObject>
<foreignObject transform="translate( -74.921875, -20)" height="18" width="143.640625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+ints : B&lt;int,Vector&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -74.921875, 14)" height="18" width="149.84375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+D(std::tuple *) : void</span>
</div>
</foreignObject>
<foreignObject transform="translate( -74.921875, 36)" height="18" width="114.28125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+add(int i) : void</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(874.328125, 102.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L36">
<g title="E" id="classId-C_0001787658457052431115-5" class="node default clickable">
<rect height="57" width="25.671875" y="-28.5" x="-12.8359375" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="12.8359375" x1="-12.8359375" class="divider"/>
<line y2="17.5" y1="17.5" x2="12.8359375" x1="-12.8359375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.3359375, -21)" height="18" width="10.671875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">E</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(874.328125, 433.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L37">
<g title="E##nested_template" id="classId-C_0001549419203490064906-6" class="node default clickable">
<rect height="79" width="201.734375" y="-39.5" x="-100.8671875" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="100.8671875" x1="-100.8671875" class="divider"/>
<line y2="6.5" y1="6.5" x2="100.8671875" x1="-100.8671875" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -93.3671875, -32)" height="18" width="186.734375" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">E::nested_template&lt;ET&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -93.3671875, 14)" height="18" width="131.46875">
<div xmlns="http://www.w3.org/1999/xhtml" style="text-decoration: underline; display: inline-block; white-space: nowrap;">
<span style="text-decoration:underline;" class="nodeLabel">+get(ET * d) : DT *</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(950.37890625, 304.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00008/t00008.cc#L44">
<g title="E##nested_template" id="classId-C_0000033637089897037832-7" class="node default clickable">
<rect height="79" width="234.203125" y="-39.5" x="-117.1015625" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="117.1015625" x1="-117.1015625" class="divider"/>
<line y2="6.5" y1="6.5" x2="117.1015625" x1="-117.1015625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -100.0390625, -32)" height="18" width="200.078125" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">E::nested_template&lt;char&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -109.6015625, 14)" height="18" width="219.203125">
<div xmlns="http://www.w3.org/1999/xhtml" style="text-decoration: underline; display: inline-block; white-space: nowrap;">
<span style="text-decoration:underline;" class="nodeLabel">+getDecl(char * c) : DeclType *</span>
</div>
</foreignObject>
</g>
</g>
</a>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -2,7 +2,7 @@
## Config
```yaml
compilation_database_dir: ..
output_directory: puml
output_directory: diagrams
diagrams:
t00009_class:
type: class
@@ -35,9 +35,262 @@ public:
A<std::string> *astring;
A<std::vector<std::string>> &avector;
};
}
}
} // namespace t00009
} // namespace clanguml
```
## Generated UML diagrams
## Generated PlantUML diagrams
![t00009_class](./t00009_class.svg "Template instantiation")
## Generated Mermaid diagrams
![t00009_class](./t00009_class_mermaid.svg "Template instantiation")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00009::A<T>",
"id": "412228989111660105",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "value",
"source_location": {
"column": 7,
"file": "../../tests/t00009/t00009.cc",
"line": 9,
"translation_unit": "../../tests/t00009/t00009.cc"
},
"type": "T"
}
],
"methods": [],
"name": "A",
"namespace": "clanguml::t00009",
"source_location": {
"column": 29,
"file": "../../tests/t00009/t00009.cc",
"line": 7,
"translation_unit": "../../tests/t00009/t00009.cc"
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00009::A<int>",
"id": "1894387438043499",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "A",
"namespace": "clanguml::t00009",
"source_location": {
"column": 29,
"file": "../../tests/t00009/t00009.cc",
"line": 7,
"translation_unit": "../../tests/t00009/t00009.cc"
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "int"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00009::A<std::string>",
"id": "1340793233843139195",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "A",
"namespace": "clanguml::t00009",
"source_location": {
"column": 29,
"file": "../../tests/t00009/t00009.cc",
"line": 7,
"translation_unit": "../../tests/t00009/t00009.cc"
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "std::string"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00009::A<std::vector<std::string>>",
"id": "1370808797762248850",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "A",
"namespace": "clanguml::t00009",
"source_location": {
"column": 29,
"file": "../../tests/t00009/t00009.cc",
"line": 7,
"translation_unit": "../../tests/t00009/t00009.cc"
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "std::string"
}
],
"type": "std::vector"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00009::B",
"id": "176239714450247310",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "aint",
"source_location": {
"column": 12,
"file": "../../tests/t00009/t00009.cc",
"line": 14,
"translation_unit": "../../tests/t00009/t00009.cc"
},
"type": "A<int>"
},
{
"access": "public",
"is_static": false,
"name": "astring",
"source_location": {
"column": 21,
"file": "../../tests/t00009/t00009.cc",
"line": 15,
"translation_unit": "../../tests/t00009/t00009.cc"
},
"type": "A<std::string> *"
},
{
"access": "public",
"is_static": false,
"name": "avector",
"source_location": {
"column": 34,
"file": "../../tests/t00009/t00009.cc",
"line": 16,
"translation_unit": "../../tests/t00009/t00009.cc"
},
"type": "A<std::vector<std::string>> &"
}
],
"methods": [],
"name": "B",
"namespace": "clanguml::t00009",
"source_location": {
"column": 7,
"file": "../../tests/t00009/t00009.cc",
"line": 12,
"translation_unit": "../../tests/t00009/t00009.cc"
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.4.0-32-g701b2c5",
"llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)",
"schema_version": 1
},
"name": "t00009_class",
"relationships": [
{
"access": "public",
"destination": "412228989111660105",
"source": "1894387438043499",
"type": "instantiation"
},
{
"access": "public",
"destination": "412228989111660105",
"source": "1340793233843139195",
"type": "instantiation"
},
{
"access": "public",
"destination": "412228989111660105",
"source": "1370808797762248850",
"type": "instantiation"
},
{
"access": "public",
"destination": "1894387438043499",
"label": "aint",
"source": "176239714450247310",
"type": "aggregation"
},
{
"access": "public",
"destination": "1340793233843139195",
"label": "astring",
"source": "176239714450247310",
"type": "association"
},
{
"access": "public",
"destination": "1370808797762248850",
"label": "avector",
"source": "176239714450247310",
"type": "association"
}
],
"using_namespace": "clanguml::t00009"
}
```

View File

@@ -1,6 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="351px" preserveAspectRatio="none" style="width:448px;height:351px;" version="1.1" viewBox="0 0 448 351" width="448px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f657xl4xrjaf8" width="300%" x="-1" y="-1">
<filter height="300%" id="fatk49frht0rb" width="300%" x="-1" y="-1">
<feGaussianBlur result="blurOut" stdDeviation="2.0"/>
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
@@ -9,91 +9,97 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f657xl4xrjaf8)" height="60.8047" id="C_0000000372" style="stroke: #A80036; stroke-width: 1.5;" width="75" x="116.5" y="280"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fatk49frht0rb)" height="60.8047" id="C_0000412228989111660105" style="stroke: #A80036; stroke-width: 1.5;" width="75" x="116.5" y="280"/>
<ellipse cx="142.3" cy="296" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M145.2688,301.6406 Q144.6906,301.9375 144.05,302.0781 Q143.4094,302.2344 142.7063,302.2344 Q140.2063,302.2344 138.8781,300.5938 Q137.5656,298.9375 137.5656,295.8125 Q137.5656,292.6875 138.8781,291.0313 Q140.2063,289.375 142.7063,289.375 Q143.4094,289.375 144.05,289.5313 Q144.7063,289.6875 145.2688,289.9844 L145.2688,292.7031 Q144.6438,292.125 144.05,291.8594 Q143.4563,291.5781 142.8313,291.5781 Q141.4875,291.5781 140.8,292.6563 Q140.1125,293.7188 140.1125,295.8125 Q140.1125,297.9063 140.8,298.9844 Q141.4875,300.0469 142.8313,300.0469 Q143.4563,300.0469 144.05,299.7813 Q144.6438,299.5 145.2688,298.9219 L145.2688,301.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="158.7" y="300.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="185.5" y="277"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="186.5" y="289.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="117.5" x2="190.5" y1="312" y2="312"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="117.5" x2="190.5" y1="320" y2="320"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L9" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L9" xlink:show="new" xlink:title="value" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="122.5" y="318"/>
<ellipse cx="127.5" cy="323" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L9" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L9" xlink:show="new" xlink:title="value" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="122.5" y="326"/>
<ellipse cx="127.5" cy="331" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L9" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L9" xlink:show="new" xlink:title="value" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="136.5" y="326.2104">value : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L9" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L9" xlink:show="new" xlink:title="value" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="136.5" y="334.2104">value : T</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="117.5" x2="190.5" y1="332.8047" y2="332.8047"/>
<rect fill="#FEFECE" filter="url(#f657xl4xrjaf8)" height="48" id="C_0000000377" style="stroke: #A80036; stroke-width: 1.5;" width="60" x="6" y="171"/>
<ellipse cx="21" cy="187" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,192.6406 Q23.3906,192.9375 22.75,193.0781 Q22.1094,193.2344 21.4063,193.2344 Q18.9063,193.2344 17.5781,191.5938 Q16.2656,189.9375 16.2656,186.8125 Q16.2656,183.6875 17.5781,182.0313 Q18.9063,180.375 21.4063,180.375 Q22.1094,180.375 22.75,180.5313 Q23.4063,180.6875 23.9688,180.9844 L23.9688,183.7031 Q23.3438,183.125 22.75,182.8594 Q22.1563,182.5781 21.5313,182.5781 Q20.1875,182.5781 19.5,183.6563 Q18.8125,184.7188 18.8125,186.8125 Q18.8125,188.9063 19.5,189.9844 Q20.1875,191.0469 21.5313,191.0469 Q22.1563,191.0469 22.75,190.7813 Q23.3438,190.5 23.9688,189.9219 L23.9688,192.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="35" y="191.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="18" x="51" y="168"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="16" x="52" y="180.1387">int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="65" y1="203" y2="203"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="65" y1="211" y2="211"/>
<rect fill="#FEFECE" filter="url(#f657xl4xrjaf8)" height="48" id="C_0000000380" style="stroke: #A80036; stroke-width: 1.5;" width="106" x="101" y="171"/>
<ellipse cx="116" cy="187" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M118.9688,192.6406 Q118.3906,192.9375 117.75,193.0781 Q117.1094,193.2344 116.4063,193.2344 Q113.9063,193.2344 112.5781,191.5938 Q111.2656,189.9375 111.2656,186.8125 Q111.2656,183.6875 112.5781,182.0313 Q113.9063,180.375 116.4063,180.375 Q117.1094,180.375 117.75,180.5313 Q118.4063,180.6875 118.9688,180.9844 L118.9688,183.7031 Q118.3438,183.125 117.75,182.8594 Q117.1563,182.5781 116.5313,182.5781 Q115.1875,182.5781 114.5,183.6563 Q113.8125,184.7188 113.8125,186.8125 Q113.8125,188.9063 114.5,189.9844 Q115.1875,191.0469 116.5313,191.0469 Q117.1563,191.0469 117.75,190.7813 Q118.3438,190.5 118.9688,189.9219 L118.9688,192.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="130" y="191.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="64" x="146" y="168"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="62" x="147" y="180.1387">std::string</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="102" x2="206" y1="203" y2="203"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="102" x2="206" y1="211" y2="211"/>
<rect fill="#FEFECE" filter="url(#f657xl4xrjaf8)" height="48" id="C_0000000383" style="stroke: #A80036; stroke-width: 1.5;" width="192" x="242" y="171"/>
<ellipse cx="257" cy="187" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M259.9688,192.6406 Q259.3906,192.9375 258.75,193.0781 Q258.1094,193.2344 257.4063,193.2344 Q254.9063,193.2344 253.5781,191.5938 Q252.2656,189.9375 252.2656,186.8125 Q252.2656,183.6875 253.5781,182.0313 Q254.9063,180.375 257.4063,180.375 Q258.1094,180.375 258.75,180.5313 Q259.4063,180.6875 259.9688,180.9844 L259.9688,183.7031 Q259.3438,183.125 258.75,182.8594 Q258.1563,182.5781 257.5313,182.5781 Q256.1875,182.5781 255.5,183.6563 Q254.8125,184.7188 254.8125,186.8125 Q254.8125,188.9063 255.5,189.9844 Q256.1875,191.0469 257.5313,191.0469 Q258.1563,191.0469 258.75,190.7813 Q259.3438,190.5 259.9688,189.9219 L259.9688,192.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="271" y="191.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="150" x="287" y="168"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="148" x="288" y="180.1387">std::vector&lt;std::string&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="243" x2="433" y1="203" y2="203"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="243" x2="433" y1="211" y2="211"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L12" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L12" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f657xl4xrjaf8)" height="86.4141" id="C_0000000376" style="stroke: #A80036; stroke-width: 1.5;" width="253" x="27.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fatk49frht0rb)" height="48" id="C_0000001894387438043499" style="stroke: #A80036; stroke-width: 1.5;" width="60" x="6" y="171"/>
<ellipse cx="21" cy="187" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,192.6406 Q23.3906,192.9375 22.75,193.0781 Q22.1094,193.2344 21.4063,193.2344 Q18.9063,193.2344 17.5781,191.5938 Q16.2656,189.9375 16.2656,186.8125 Q16.2656,183.6875 17.5781,182.0313 Q18.9063,180.375 21.4063,180.375 Q22.1094,180.375 22.75,180.5313 Q23.4063,180.6875 23.9688,180.9844 L23.9688,183.7031 Q23.3438,183.125 22.75,182.8594 Q22.1563,182.5781 21.5313,182.5781 Q20.1875,182.5781 19.5,183.6563 Q18.8125,184.7188 18.8125,186.8125 Q18.8125,188.9063 19.5,189.9844 Q20.1875,191.0469 21.5313,191.0469 Q22.1563,191.0469 22.75,190.7813 Q23.3438,190.5 23.9688,189.9219 L23.9688,192.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="35" y="191.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="18" x="51" y="168"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="16" x="52" y="180.1387">int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="65" y1="203" y2="203"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="65" y1="211" y2="211"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fatk49frht0rb)" height="48" id="C_0001340793233843139195" style="stroke: #A80036; stroke-width: 1.5;" width="106" x="101" y="171"/>
<ellipse cx="116" cy="187" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M118.9688,192.6406 Q118.3906,192.9375 117.75,193.0781 Q117.1094,193.2344 116.4063,193.2344 Q113.9063,193.2344 112.5781,191.5938 Q111.2656,189.9375 111.2656,186.8125 Q111.2656,183.6875 112.5781,182.0313 Q113.9063,180.375 116.4063,180.375 Q117.1094,180.375 117.75,180.5313 Q118.4063,180.6875 118.9688,180.9844 L118.9688,183.7031 Q118.3438,183.125 117.75,182.8594 Q117.1563,182.5781 116.5313,182.5781 Q115.1875,182.5781 114.5,183.6563 Q113.8125,184.7188 113.8125,186.8125 Q113.8125,188.9063 114.5,189.9844 Q115.1875,191.0469 116.5313,191.0469 Q117.1563,191.0469 117.75,190.7813 Q118.3438,190.5 118.9688,189.9219 L118.9688,192.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="130" y="191.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="64" x="146" y="168"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="62" x="147" y="180.1387">std::string</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="102" x2="206" y1="203" y2="203"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="102" x2="206" y1="211" y2="211"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fatk49frht0rb)" height="48" id="C_0001370808797762248850" style="stroke: #A80036; stroke-width: 1.5;" width="192" x="242" y="171"/>
<ellipse cx="257" cy="187" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M259.9688,192.6406 Q259.3906,192.9375 258.75,193.0781 Q258.1094,193.2344 257.4063,193.2344 Q254.9063,193.2344 253.5781,191.5938 Q252.2656,189.9375 252.2656,186.8125 Q252.2656,183.6875 253.5781,182.0313 Q254.9063,180.375 257.4063,180.375 Q258.1094,180.375 258.75,180.5313 Q259.4063,180.6875 259.9688,180.9844 L259.9688,183.7031 Q259.3438,183.125 258.75,182.8594 Q258.1563,182.5781 257.5313,182.5781 Q256.1875,182.5781 255.5,183.6563 Q254.8125,184.7188 254.8125,186.8125 Q254.8125,188.9063 255.5,189.9844 Q256.1875,191.0469 257.5313,191.0469 Q258.1563,191.0469 258.75,190.7813 Q259.3438,190.5 259.9688,189.9219 L259.9688,192.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="271" y="191.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="150" x="287" y="168"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="148" x="288" y="180.1387">std::vector&lt;std::string&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="243" x2="433" y1="203" y2="203"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="243" x2="433" y1="211" y2="211"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L12" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L12" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fatk49frht0rb)" height="86.4141" id="C_0000176239714450247310" style="stroke: #A80036; stroke-width: 1.5;" width="257" x="25.5" y="8"/>
<ellipse cx="145.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M148.7188,29.6406 Q148.1406,29.9375 147.5,30.0781 Q146.8594,30.2344 146.1563,30.2344 Q143.6563,30.2344 142.3281,28.5938 Q141.0156,26.9375 141.0156,23.8125 Q141.0156,20.6875 142.3281,19.0313 Q143.6563,17.375 146.1563,17.375 Q146.8594,17.375 147.5,17.5313 Q148.1563,17.6875 148.7188,17.9844 L148.7188,20.7031 Q148.0938,20.125 147.5,19.8594 Q146.9063,19.5781 146.2813,19.5781 Q144.9375,19.5781 144.25,20.6563 Q143.5625,21.7188 143.5625,23.8125 Q143.5625,25.9063 144.25,26.9844 Q144.9375,28.0469 146.2813,28.0469 Q146.9063,28.0469 147.5,27.7813 Q148.0938,27.5 148.7188,26.9219 L148.7188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="166.25" y="28.1543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="28.5" x2="279.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="26.5" x2="281.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="26.5" x2="281.5" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L14" target="_top" title="aint" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L14" xlink:show="new" xlink:title="aint" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="33.5" y="46"/>
<ellipse cx="38.5" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L14" target="_top" title="aint" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L14" xlink:show="new" xlink:title="aint" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="31.5" y="54"/>
<ellipse cx="36.5" cy="59" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L14" target="_top" title="aint" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L14" xlink:show="new" xlink:title="aint" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="72" x="47.5" y="54.2104">aint : A&lt;int&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L14" target="_top" title="aint" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L14" xlink:show="new" xlink:title="aint" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="72" x="45.5" y="62.2104">aint : A&lt;int&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L15" xlink:show="new" xlink:title="astring" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="33.5" y="58.8047"/>
<ellipse cx="38.5" cy="63.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L15" xlink:show="new" xlink:title="astring" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="31.5" y="66.8047"/>
<ellipse cx="36.5" cy="71.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L15" xlink:show="new" xlink:title="astring" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="142" x="47.5" y="67.0151">astring : A&lt;std::string&gt;*</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L15" xlink:show="new" xlink:title="astring" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="45.5" y="75.0151">astring : A&lt;std::string&gt; *</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L16" target="_top" title="avector" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L16" xlink:show="new" xlink:title="avector" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="33.5" y="71.6094"/>
<ellipse cx="38.5" cy="76.6094" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L16" target="_top" title="avector" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L16" xlink:show="new" xlink:title="avector" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="31.5" y="79.6094"/>
<ellipse cx="36.5" cy="84.6094" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L16" target="_top" title="avector" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00009/t00009.cc#L16" xlink:show="new" xlink:title="avector" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="227" x="47.5" y="79.8198">avector : A&lt;std::vector&lt;std::string&gt;&gt;&amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L16" target="_top" title="avector" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L16" xlink:show="new" xlink:title="avector" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="231" x="45.5" y="87.8198">avector : A&lt;std::vector&lt;std::string&gt;&gt; &amp;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="28.5" x2="279.5" y1="86.4141" y2="86.4141"/>
<path d="M60.16,219.24 C74.1,232.65 92.08,249.94 108.57,265.8 " fill="none" id="C_0000000377-&gt;C_0000000372" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M60.16,219.24 C74.1,232.65 92.08,249.94 108.57,265.8 " fill="none" id="C_0000001894387438043499-&gt;C_0000412228989111660105" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="113.57,260.9,123.13,279.81,103.86,270.99,113.57,260.9" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M154,219.24 C154,230.87 154,245.42 154,259.43 " fill="none" id="C_0000000380-&gt;C_0000000372" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M154,219.24 C154,230.87 154,245.42 154,259.43 " fill="none" id="C_0001340793233843139195-&gt;C_0000412228989111660105" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="161,259.81,154,279.81,147,259.81,161,259.81" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M300.32,219.24 C274.03,235.46 238.51,257.37 209.05,275.54 " fill="none" id="C_0000000383-&gt;C_0000000372" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M300.32,219.24 C274.03,235.46 238.51,257.37 209.05,275.54 " fill="none" id="C_0001370808797762248850-&gt;C_0000412228989111660105" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="212.33,281.75,191.63,286.29,204.98,269.83,212.33,281.75" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M110.41,104.45 C91.49,127.23 70.29,152.74 55.37,170.69 " fill="none" id="C_0000000376&lt;-C_0000000377" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M110.41,104.45 C91.49,127.23 70.29,152.74 55.37,170.69 " fill="none" id="C_0000176239714450247310&lt;-C_0000001894387438043499" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="118.92,94.22,112.0083,96.2764,111.2482,103.4473,118.1598,101.3909,118.92,94.22" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="98" cy="133.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="105" y="137.0669">aint</text>
<path d="M154,94.22 C154,117.28 154,145.22 154,165.66 " fill="none" id="C_0000000376-&gt;C_0000000380" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M154,94.22 C154,117.28 154,145.22 154,165.66 " fill="none" id="C_0000176239714450247310-&gt;C_0001340793233843139195" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="154,170.69,158,161.69,154,165.69,150,161.69,154,170.69" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="160" cy="133.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="44" x="167" y="137.0669">astring</text>
<path d="M208.71,94.22 C239.58,118.04 277.19,147.07 303.87,167.66 " fill="none" id="C_0000000376-&gt;C_0000000383" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M208.71,94.22 C239.58,118.04 277.19,147.07 303.87,167.66 " fill="none" id="C_0000176239714450247310-&gt;C_0001370808797762248850" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="308.06,170.89,303.3833,162.2223,304.1033,167.8332,298.4924,168.5531,308.06,170.89" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="273" cy="133.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="48" x="280" y="137.0669">avector</text>

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,247 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" aria-roledescription="classDiagram" role="graphics-document document" viewBox="0 0 530.859375 393" style="max-width: 530.859px; background-color: white;" width="530.859375" id="my-svg">
<style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#my-svg g.classGroup text .title{font-weight:bolder;}#my-svg .nodeLabel,#my-svg .edgeLabel{color:#131300;}#my-svg .edgeLabel .label rect{fill:#ECECFF;}#my-svg .label text{fill:#131300;}#my-svg .edgeLabel .label span{background:#ECECFF;}#my-svg .classTitle{font-weight:bolder;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .divider{stroke:#9370DB;stroke-width:1;}#my-svg g.clickable{cursor:pointer;}#my-svg g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#my-svg g.classGroup line{stroke:#9370DB;stroke-width:1;}#my-svg .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#my-svg .classLabel .label{fill:#9370DB;font-size:10px;}#my-svg .relation{stroke:#333333;stroke-width:1;fill:none;}#my-svg .dashed-line{stroke-dasharray:3;}#my-svg .dotted-line{stroke-dasharray:1 2;}#my-svg #compositionStart,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #compositionEnd,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionStart,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionEnd,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationStart,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationEnd,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopStart,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopEnd,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg .edgeTerminals{font-size:11px;}#my-svg .classTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style>
<g>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker aggregation classDiagram" id="classDiagram-aggregationStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker aggregation classDiagram" id="classDiagram-aggregationEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker extension classDiagram" id="classDiagram-extensionStart">
<path d="M 1,7 L18,13 V 1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker extension classDiagram" id="classDiagram-extensionEnd">
<path d="M 1,1 V 13 L18,7 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker composition classDiagram" id="classDiagram-compositionStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker composition classDiagram" id="classDiagram-compositionEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker dependency classDiagram" id="classDiagram-dependencyStart">
<path d="M 5,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker dependency classDiagram" id="classDiagram-dependencyEnd">
<path d="M 18,7 L9,13 L14,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker lollipop classDiagram" id="classDiagram-lollipopStart">
<circle r="6" cy="7" cx="6" fill="white" stroke="black"/>
</marker>
</defs>
<g class="root">
<g class="clusters"/>
<g class="edgePaths">
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id1" d="M40.3984375,256L40.3984375,260.1666666666667C40.3984375,264.3333333333333,40.3984375,272.6666666666667,57.375,284.40742141763485C74.3515625,296.1481761686031,108.3046875,311.29635233720614,125.28125,318.8704404215077L142.2578125,326.4445285058092"/>
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id2" d="M184.96875,256L184.96875,260.1666666666667C184.96875,264.3333333333333,184.96875,272.6666666666667,184.96875,281C184.96875,289.3333333333333,184.96875,297.6666666666667,184.96875,301.8333333333333L184.96875,306"/>
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id3" d="M410,256L410,260.1666666666667C410,264.3333333333333,410,272.6666666666667,379.61328125,285.5429830347637C349.2265625,298.41929940286076,288.453125,315.83859880572146,258.06640625,324.5482485071518L227.6796875,333.25789820858216"/>
<path marker-start="url(#classDiagram-aggregationStart)" style="fill:none" class="edge-pattern-solid relation" id="id4" d="M91.86849640052355,131L83.29015325043629,136.66666666666666C74.71181010034904,142.33333333333334,57.55512380017452,153.66666666666666,48.97678065008726,165C40.3984375,176.33333333333334,40.3984375,187.66666666666666,40.3984375,193.33333333333334L40.3984375,199"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id5" d="M184.96875,131L184.96875,136.66666666666666C184.96875,142.33333333333334,184.96875,153.66666666666666,184.96875,165C184.96875,176.33333333333334,184.96875,187.66666666666666,184.96875,193.33333333333334L184.96875,199"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id6" d="M329.8841623036649,131L343.2368019197208,136.66666666666666C356.5894415357766,142.33333333333334,383.2947207678883,153.66666666666666,396.6473603839442,165C410,176.33333333333334,410,187.66666666666666,410,193.33333333333334L410,199"/>
</g>
<g class="edgeLabels">
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(40.3984375, 165)" class="edgeLabel">
<g transform="translate(-17.5703125, -9)" class="label">
<foreignObject height="18" width="35.140625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+aint</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(184.96875, 165)" class="edgeLabel">
<g transform="translate(-28.6875, -9)" class="label">
<foreignObject height="18" width="57.375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+astring</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(410, 165)" class="edgeLabel">
<g transform="translate(-30.90625, -9)" class="label">
<foreignObject height="18" width="61.8125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+avector</span>
</span>
</div>
</foreignObject>
</g>
</g>
</g>
<g class="nodes">
<a transform="translate(184.96875, 345.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L7">
<g title="A" id="classId-C_0000412228989111660105-0" class="node default clickable">
<rect height="79" width="85.421875" y="-39.5" x="-42.7109375" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="42.7109375" x1="-42.7109375" class="divider"/>
<line y2="28.5" y1="28.5" x2="42.7109375" x1="-42.7109375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -20.0078125, -32)" height="18" width="40.015625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A&lt;T&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -35.2109375, 2)" height="18" width="70.421875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+value : T</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(40.3984375, 227.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L7">
<g title="A" id="classId-C_0000001894387438043499-1" class="node default clickable">
<rect height="57" width="64.796875" y="-28.5" x="-32.3984375" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="32.3984375" x1="-32.3984375" class="divider"/>
<line y2="17.5" y1="17.5" x2="32.3984375" x1="-32.3984375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -24.8984375, -21)" height="18" width="49.796875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A&lt;int&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(184.96875, 227.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L7">
<g title="A" id="classId-C_0001340793233843139195-2" class="node default clickable">
<rect height="57" width="124.34375" y="-28.5" x="-62.171875" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="62.171875" x1="-62.171875" class="divider"/>
<line y2="17.5" y1="17.5" x2="62.171875" x1="-62.171875" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -54.671875, -21)" height="18" width="109.34375" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A&lt;std::string&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(410, 227.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L7">
<g title="A" id="classId-C_0001370808797762248850-3" class="node default clickable">
<rect height="57" width="225.71875" y="-28.5" x="-112.859375" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="112.859375" x1="-112.859375" class="divider"/>
<line y2="17.5" y1="17.5" x2="112.859375" x1="-112.859375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -105.359375, -21)" height="18" width="210.71875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A&lt;std::vector&lt;std::string&gt;&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(184.96875, 69.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00009/t00009.cc#L12">
<g title="B" id="classId-C_0000176239714450247310-4" class="node default clickable">
<rect height="123" width="295.59375" y="-61.5" x="-147.796875" class="outer title-state"/>
<line y2="-31.5" y1="-31.5" x2="147.796875" x1="-147.796875" class="divider"/>
<line y2="50.5" y1="50.5" x2="147.796875" x1="-147.796875" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -54)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">B</span>
</div>
</foreignObject>
<foreignObject transform="translate( -140.296875, -20)" height="18" width="93.859375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+aint : A&lt;int&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -140.296875, 2)" height="18" width="168.828125">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-style: italic; display: inline-block; white-space: nowrap;">
<span style="font-style:italic;" class="nodeLabel">+astring : A&lt;std::string&gt; </span>
</div>
</foreignObject>
<foreignObject transform="translate( -140.296875, 24)" height="18" width="280.59375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+avector : A&lt;std::vector&lt;std::string&gt;&gt; &amp;</span>
</div>
</foreignObject>
</g>
</g>
</a>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -2,7 +2,7 @@
## Config
```yaml
compilation_database_dir: ..
output_directory: puml
output_directory: diagrams
diagrams:
t00010_class:
type: class
@@ -39,9 +39,255 @@ class C {
public:
B<int> aintstring;
};
}
}
} // namespace t00010
} // namespace clanguml
```
## Generated UML diagrams
## Generated PlantUML diagrams
![t00010_class](./t00010_class.svg "Basic template instantiation")
## Generated Mermaid diagrams
![t00010_class](./t00010_class_mermaid.svg "Basic template instantiation")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00010::A<T,P>",
"id": "2222216618904514099",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "first",
"source_location": {
"column": 7,
"file": "../../tests/t00010/t00010.cc",
"line": 9,
"translation_unit": "../../tests/t00010/t00010.cc"
},
"type": "T"
},
{
"access": "public",
"is_static": false,
"name": "second",
"source_location": {
"column": 7,
"file": "../../tests/t00010/t00010.cc",
"line": 10,
"translation_unit": "../../tests/t00010/t00010.cc"
},
"type": "P"
}
],
"methods": [],
"name": "A",
"namespace": "clanguml::t00010",
"source_location": {
"column": 41,
"file": "../../tests/t00010/t00010.cc",
"line": 7,
"translation_unit": "../../tests/t00010/t00010.cc"
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
},
{
"is_variadic": false,
"kind": "template_type",
"name": "P",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00010::A<T,std::string>",
"id": "1861520693741915300",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "A",
"namespace": "clanguml::t00010",
"source_location": {
"column": 41,
"file": "../../tests/t00010/t00010.cc",
"line": 7,
"translation_unit": "../../tests/t00010/t00010.cc"
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
},
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "std::string"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00010::B<T>",
"id": "2303611426082708583",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "astring",
"source_location": {
"column": 23,
"file": "../../tests/t00010/t00010.cc",
"line": 15,
"translation_unit": "../../tests/t00010/t00010.cc"
},
"type": "A<T,std::string>"
}
],
"methods": [],
"name": "B",
"namespace": "clanguml::t00010",
"source_location": {
"column": 29,
"file": "../../tests/t00010/t00010.cc",
"line": 13,
"translation_unit": "../../tests/t00010/t00010.cc"
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00010::B<int>",
"id": "1498376939480949099",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "B",
"namespace": "clanguml::t00010",
"source_location": {
"column": 29,
"file": "../../tests/t00010/t00010.cc",
"line": 13,
"translation_unit": "../../tests/t00010/t00010.cc"
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "int"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00010::C",
"id": "1880966578968892571",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "aintstring",
"source_location": {
"column": 12,
"file": "../../tests/t00010/t00010.cc",
"line": 20,
"translation_unit": "../../tests/t00010/t00010.cc"
},
"type": "B<int>"
}
],
"methods": [],
"name": "C",
"namespace": "clanguml::t00010",
"source_location": {
"column": 7,
"file": "../../tests/t00010/t00010.cc",
"line": 18,
"translation_unit": "../../tests/t00010/t00010.cc"
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.4.0-32-g701b2c5",
"llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)",
"schema_version": 1
},
"name": "t00010_class",
"relationships": [
{
"access": "public",
"destination": "2222216618904514099",
"source": "1861520693741915300",
"type": "instantiation"
},
{
"access": "public",
"destination": "1861520693741915300",
"label": "astring",
"source": "2303611426082708583",
"type": "aggregation"
},
{
"access": "public",
"destination": "2303611426082708583",
"source": "1498376939480949099",
"type": "instantiation"
},
{
"access": "public",
"destination": "1498376939480949099",
"label": "aintstring",
"source": "1880966578968892571",
"type": "aggregation"
}
],
"using_namespace": "clanguml::t00010"
}
```

View File

@@ -1,6 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="586px" preserveAspectRatio="none" style="width:193px;height:586px;" version="1.1" viewBox="0 0 193 586" width="193px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f10xbavpz34zxu" width="300%" x="-1" y="-1">
<filter height="300%" id="f1hlkabybjrl1h" width="300%" x="-1" y="-1">
<feGaussianBlur result="blurOut" stdDeviation="2.0"/>
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
@@ -9,87 +9,91 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f10xbavpz34zxu)" height="73.6094" id="C_0000000406" style="stroke: #A80036; stroke-width: 1.5;" width="86" x="49.5" y="502"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1hlkabybjrl1h)" height="73.6094" id="C_0002222216618904514099" style="stroke: #A80036; stroke-width: 1.5;" width="86" x="49.5" y="502"/>
<ellipse cx="75.3" cy="518" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M78.2688,523.6406 Q77.6906,523.9375 77.05,524.0781 Q76.4094,524.2344 75.7063,524.2344 Q73.2063,524.2344 71.8781,522.5938 Q70.5656,520.9375 70.5656,517.8125 Q70.5656,514.6875 71.8781,513.0313 Q73.2063,511.375 75.7063,511.375 Q76.4094,511.375 77.05,511.5313 Q77.7063,511.6875 78.2688,511.9844 L78.2688,514.7031 Q77.6438,514.125 77.05,513.8594 Q76.4563,513.5781 75.8313,513.5781 Q74.4875,513.5781 73.8,514.6563 Q73.1125,515.7188 73.1125,517.8125 Q73.1125,519.9063 73.8,520.9844 Q74.4875,522.0469 75.8313,522.0469 Q76.4563,522.0469 77.05,521.7813 Q77.6438,521.5 78.2688,520.9219 L78.2688,523.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="91.7" y="522.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="20" x="118.5" y="499"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="18" x="119.5" y="511.1387">T,P</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="50.5" x2="134.5" y1="534" y2="534"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="50.5" x2="134.5" y1="542" y2="542"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L9" target="_top" title="first" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L9" xlink:show="new" xlink:title="first" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="55.5" y="540"/>
<ellipse cx="60.5" cy="545" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L9" target="_top" title="first" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L9" xlink:show="new" xlink:title="first" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="55.5" y="548"/>
<ellipse cx="60.5" cy="553" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L9" target="_top" title="first" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L9" xlink:show="new" xlink:title="first" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="42" x="69.5" y="548.2104">first : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L9" target="_top" title="first" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L9" xlink:show="new" xlink:title="first" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="42" x="69.5" y="556.2104">first : T</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L10" target="_top" title="second" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L10" xlink:show="new" xlink:title="second" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="55.5" y="552.8047"/>
<ellipse cx="60.5" cy="557.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L10" target="_top" title="second" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L10" xlink:show="new" xlink:title="second" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="55.5" y="560.8047"/>
<ellipse cx="60.5" cy="565.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L10" target="_top" title="second" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L10" xlink:show="new" xlink:title="second" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="60" x="69.5" y="561.0151">second : P</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L10" target="_top" title="second" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L10" xlink:show="new" xlink:title="second" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="60" x="69.5" y="569.0151">second : P</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="50.5" x2="134.5" y1="567.6094" y2="567.6094"/>
<rect fill="#FEFECE" filter="url(#f10xbavpz34zxu)" height="48" id="C_0000000411" style="stroke: #A80036; stroke-width: 1.5;" width="117" x="34" y="393"/>
<ellipse cx="49" cy="409" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M51.9688,414.6406 Q51.3906,414.9375 50.75,415.0781 Q50.1094,415.2344 49.4063,415.2344 Q46.9063,415.2344 45.5781,413.5938 Q44.2656,411.9375 44.2656,408.8125 Q44.2656,405.6875 45.5781,404.0313 Q46.9063,402.375 49.4063,402.375 Q50.1094,402.375 50.75,402.5313 Q51.4063,402.6875 51.9688,402.9844 L51.9688,405.7031 Q51.3438,405.125 50.75,404.8594 Q50.1563,404.5781 49.5313,404.5781 Q48.1875,404.5781 47.5,405.6563 Q46.8125,406.7188 46.8125,408.8125 Q46.8125,410.9063 47.5,411.9844 Q48.1875,413.0469 49.5313,413.0469 Q50.1563,413.0469 50.75,412.7813 Q51.3438,412.5 51.9688,411.9219 L51.9688,414.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="63" y="413.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="75" x="79" y="390"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="73" x="80" y="402.1387">T,std::string</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="35" x2="150" y1="425" y2="425"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="35" x2="150" y1="433" y2="433"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L13" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L13" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f10xbavpz34zxu)" height="60.8047" id="C_0000000410" style="stroke: #A80036; stroke-width: 1.5;" width="173" x="6" y="255"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1hlkabybjrl1h)" height="48" id="C_0001861520693741915300" style="stroke: #A80036; stroke-width: 1.5;" width="117" x="34" y="393"/>
<ellipse cx="49" cy="409" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M51.9688,414.6406 Q51.3906,414.9375 50.75,415.0781 Q50.1094,415.2344 49.4063,415.2344 Q46.9063,415.2344 45.5781,413.5938 Q44.2656,411.9375 44.2656,408.8125 Q44.2656,405.6875 45.5781,404.0313 Q46.9063,402.375 49.4063,402.375 Q50.1094,402.375 50.75,402.5313 Q51.4063,402.6875 51.9688,402.9844 L51.9688,405.7031 Q51.3438,405.125 50.75,404.8594 Q50.1563,404.5781 49.5313,404.5781 Q48.1875,404.5781 47.5,405.6563 Q46.8125,406.7188 46.8125,408.8125 Q46.8125,410.9063 47.5,411.9844 Q48.1875,413.0469 49.5313,413.0469 Q50.1563,413.0469 50.75,412.7813 Q51.3438,412.5 51.9688,411.9219 L51.9688,414.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="63" y="413.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="75" x="79" y="390"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="73" x="80" y="402.1387">T,std::string</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="35" x2="150" y1="425" y2="425"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="35" x2="150" y1="433" y2="433"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L13" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L13" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1hlkabybjrl1h)" height="60.8047" id="C_0002303611426082708583" style="stroke: #A80036; stroke-width: 1.5;" width="173" x="6" y="255"/>
<ellipse cx="78.75" cy="271" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M81.7188,276.6406 Q81.1406,276.9375 80.5,277.0781 Q79.8594,277.2344 79.1563,277.2344 Q76.6563,277.2344 75.3281,275.5938 Q74.0156,273.9375 74.0156,270.8125 Q74.0156,267.6875 75.3281,266.0313 Q76.6563,264.375 79.1563,264.375 Q79.8594,264.375 80.5,264.5313 Q81.1563,264.6875 81.7188,264.9844 L81.7188,267.7031 Q81.0938,267.125 80.5,266.8594 Q79.9063,266.5781 79.2813,266.5781 Q77.9375,266.5781 77.25,267.6563 Q76.5625,268.7188 76.5625,270.8125 Q76.5625,272.9063 77.25,273.9844 Q77.9375,275.0469 79.2813,275.0469 Q79.9063,275.0469 80.5,274.7813 Q81.0938,274.5 81.7188,273.9219 L81.7188,276.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="99.25" y="275.1543">B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="173" y="252"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="174" y="264.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="178" y1="287" y2="287"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="178" y1="295" y2="295"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L15" xlink:show="new" xlink:title="astring" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="293"/>
<ellipse cx="17" cy="298" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L15" xlink:show="new" xlink:title="astring" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="301"/>
<ellipse cx="17" cy="306" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L15" xlink:show="new" xlink:title="astring" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="147" x="26" y="301.2104">astring : A&lt;T,std::string&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L15" xlink:show="new" xlink:title="astring" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="147" x="26" y="309.2104">astring : A&lt;T,std::string&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="178" y1="307.8047" y2="307.8047"/>
<rect fill="#FEFECE" filter="url(#f10xbavpz34zxu)" height="48" id="C_0000000421" style="stroke: #A80036; stroke-width: 1.5;" width="60" x="62.5" y="146"/>
<ellipse cx="77.5" cy="162" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M80.4688,167.6406 Q79.8906,167.9375 79.25,168.0781 Q78.6094,168.2344 77.9063,168.2344 Q75.4063,168.2344 74.0781,166.5938 Q72.7656,164.9375 72.7656,161.8125 Q72.7656,158.6875 74.0781,157.0313 Q75.4063,155.375 77.9063,155.375 Q78.6094,155.375 79.25,155.5313 Q79.9063,155.6875 80.4688,155.9844 L80.4688,158.7031 Q79.8438,158.125 79.25,157.8594 Q78.6563,157.5781 78.0313,157.5781 Q76.6875,157.5781 76,158.6563 Q75.3125,159.7188 75.3125,161.8125 Q75.3125,163.9063 76,164.9844 Q76.6875,166.0469 78.0313,166.0469 Q78.6563,166.0469 79.25,165.7813 Q79.8438,165.5 80.4688,164.9219 L80.4688,167.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="91.5" y="166.1543">B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="18" x="107.5" y="143"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="16" x="108.5" y="155.1387">int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="63.5" x2="121.5" y1="178" y2="178"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="63.5" x2="121.5" y1="186" y2="186"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L18" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L18" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f10xbavpz34zxu)" height="60.8047" id="C_0000000420" style="stroke: #A80036; stroke-width: 1.5;" width="132" x="26.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L13" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L13" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1hlkabybjrl1h)" height="48" id="C_0001498376939480949099" style="stroke: #A80036; stroke-width: 1.5;" width="60" x="62.5" y="146"/>
<ellipse cx="77.5" cy="162" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M80.4688,167.6406 Q79.8906,167.9375 79.25,168.0781 Q78.6094,168.2344 77.9063,168.2344 Q75.4063,168.2344 74.0781,166.5938 Q72.7656,164.9375 72.7656,161.8125 Q72.7656,158.6875 74.0781,157.0313 Q75.4063,155.375 77.9063,155.375 Q78.6094,155.375 79.25,155.5313 Q79.9063,155.6875 80.4688,155.9844 L80.4688,158.7031 Q79.8438,158.125 79.25,157.8594 Q78.6563,157.5781 78.0313,157.5781 Q76.6875,157.5781 76,158.6563 Q75.3125,159.7188 75.3125,161.8125 Q75.3125,163.9063 76,164.9844 Q76.6875,166.0469 78.0313,166.0469 Q78.6563,166.0469 79.25,165.7813 Q79.8438,165.5 80.4688,164.9219 L80.4688,167.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="91.5" y="166.1543">B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="18" x="107.5" y="143"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="16" x="108.5" y="155.1387">int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="63.5" x2="121.5" y1="178" y2="178"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="63.5" x2="121.5" y1="186" y2="186"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L18" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L18" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1hlkabybjrl1h)" height="60.8047" id="C_0001880966578968892571" style="stroke: #A80036; stroke-width: 1.5;" width="132" x="26.5" y="8"/>
<ellipse cx="84.25" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M87.2188,29.6406 Q86.6406,29.9375 86,30.0781 Q85.3594,30.2344 84.6563,30.2344 Q82.1563,30.2344 80.8281,28.5938 Q79.5156,26.9375 79.5156,23.8125 Q79.5156,20.6875 80.8281,19.0313 Q82.1563,17.375 84.6563,17.375 Q85.3594,17.375 86,17.5313 Q86.6563,17.6875 87.2188,17.9844 L87.2188,20.7031 Q86.5938,20.125 86,19.8594 Q85.4063,19.5781 84.7813,19.5781 Q83.4375,19.5781 82.75,20.6563 Q82.0625,21.7188 82.0625,23.8125 Q82.0625,25.9063 82.75,26.9844 Q83.4375,28.0469 84.7813,28.0469 Q85.4063,28.0469 86,27.7813 Q86.5938,27.5 87.2188,26.9219 L87.2188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="104.75" y="28.1543">C</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="27.5" x2="157.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="27.5" x2="157.5" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L20" target="_top" title="aintstring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L20" xlink:show="new" xlink:title="aintstring" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="32.5" y="46"/>
<ellipse cx="37.5" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L20" target="_top" title="aintstring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L20" xlink:show="new" xlink:title="aintstring" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="32.5" y="54"/>
<ellipse cx="37.5" cy="59" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L20" target="_top" title="aintstring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00010/t00010.cc#L20" xlink:show="new" xlink:title="aintstring" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="106" x="46.5" y="54.2104">aintstring : B&lt;int&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L20" target="_top" title="aintstring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L20" xlink:show="new" xlink:title="aintstring" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="106" x="46.5" y="62.2104">aintstring : B&lt;int&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="27.5" x2="157.5" y1="60.8047" y2="60.8047"/>
<path d="M92.5,441.14 C92.5,452.67 92.5,467.17 92.5,481.41 " fill="none" id="C_0000000411-&gt;C_0000000406" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M92.5,441.14 C92.5,452.67 92.5,467.17 92.5,481.41 " fill="none" id="C_0001861520693741915300-&gt;C_0002222216618904514099" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="99.5,481.71,92.5,501.71,85.5,481.71,99.5,481.71" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M92.5,329.5 C92.5,350.65 92.5,375.32 92.5,392.88 " fill="none" id="C_0000000410&lt;-C_0000000411" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M92.5,329.5 C92.5,350.65 92.5,375.32 92.5,392.88 " fill="none" id="C_0002303611426082708583&lt;-C_0001861520693741915300" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="92.5,316.21,88.5,322.21,92.5,328.21,96.5,322.21,92.5,316.21" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="98.5" cy="355.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="44" x="105.5" y="359.0669">astring</text>
<path d="M92.5,194.24 C92.5,205.87 92.5,220.42 92.5,234.43 " fill="none" id="C_0000000421-&gt;C_0000000410" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M92.5,194.24 C92.5,205.87 92.5,220.42 92.5,234.43 " fill="none" id="C_0001498376939480949099-&gt;C_0002303611426082708583" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="99.5,234.81,92.5,254.81,85.5,234.81,99.5,234.81" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M92.5,82.5 C92.5,103.65 92.5,128.32 92.5,145.88 " fill="none" id="C_0000000420&lt;-C_0000000421" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M92.5,82.5 C92.5,103.65 92.5,128.32 92.5,145.88 " fill="none" id="C_0001880966578968892571&lt;-C_0001498376939480949099" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="92.5,69.21,88.5,75.21,92.5,81.21,96.5,75.21,92.5,69.21" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="98.5" cy="108.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="60" x="105.5" y="112.0669">aintstring</text>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,223 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" aria-roledescription="classDiagram" role="graphics-document document" viewBox="0 0 211.984375 625" style="max-width: 211.984px; background-color: white;" width="211.984375" id="my-svg">
<style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#my-svg g.classGroup text .title{font-weight:bolder;}#my-svg .nodeLabel,#my-svg .edgeLabel{color:#131300;}#my-svg .edgeLabel .label rect{fill:#ECECFF;}#my-svg .label text{fill:#131300;}#my-svg .edgeLabel .label span{background:#ECECFF;}#my-svg .classTitle{font-weight:bolder;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .divider{stroke:#9370DB;stroke-width:1;}#my-svg g.clickable{cursor:pointer;}#my-svg g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#my-svg g.classGroup line{stroke:#9370DB;stroke-width:1;}#my-svg .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#my-svg .classLabel .label{fill:#9370DB;font-size:10px;}#my-svg .relation{stroke:#333333;stroke-width:1;fill:none;}#my-svg .dashed-line{stroke-dasharray:3;}#my-svg .dotted-line{stroke-dasharray:1 2;}#my-svg #compositionStart,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #compositionEnd,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionStart,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionEnd,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationStart,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationEnd,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopStart,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopEnd,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg .edgeTerminals{font-size:11px;}#my-svg .classTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style>
<g>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker aggregation classDiagram" id="classDiagram-aggregationStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker aggregation classDiagram" id="classDiagram-aggregationEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker extension classDiagram" id="classDiagram-extensionStart">
<path d="M 1,7 L18,13 V 1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker extension classDiagram" id="classDiagram-extensionEnd">
<path d="M 1,1 V 13 L18,7 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker composition classDiagram" id="classDiagram-compositionStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker composition classDiagram" id="classDiagram-compositionEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker dependency classDiagram" id="classDiagram-dependencyStart">
<path d="M 5,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker dependency classDiagram" id="classDiagram-dependencyEnd">
<path d="M 18,7 L9,13 L14,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker lollipop classDiagram" id="classDiagram-lollipopStart">
<circle r="6" cy="7" cx="6" fill="white" stroke="black"/>
</marker>
</defs>
<g class="root">
<g class="clusters"/>
<g class="edgePaths">
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id1" d="M105.9921875,466L105.9921875,470.1666666666667C105.9921875,474.3333333333333,105.9921875,482.6666666666667,105.9921875,491C105.9921875,499.3333333333333,105.9921875,507.6666666666667,105.9921875,511.8333333333333L105.9921875,516"/>
<path marker-start="url(#classDiagram-aggregationStart)" style="fill:none" class="edge-pattern-solid relation" id="id2" d="M105.9921875,341L105.9921875,346.6666666666667C105.9921875,352.3333333333333,105.9921875,363.6666666666667,105.9921875,375C105.9921875,386.3333333333333,105.9921875,397.6666666666667,105.9921875,403.3333333333333L105.9921875,409"/>
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id3" d="M105.9921875,212L105.9921875,216.16666666666666C105.9921875,220.33333333333334,105.9921875,228.66666666666666,105.9921875,237C105.9921875,245.33333333333334,105.9921875,253.66666666666666,105.9921875,257.8333333333333L105.9921875,262"/>
<path marker-start="url(#classDiagram-aggregationStart)" style="fill:none" class="edge-pattern-solid relation" id="id4" d="M105.9921875,87L105.9921875,92.66666666666667C105.9921875,98.33333333333333,105.9921875,109.66666666666667,105.9921875,121C105.9921875,132.33333333333334,105.9921875,143.66666666666666,105.9921875,149.33333333333334L105.9921875,155"/>
</g>
<g class="edgeLabels">
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(105.9921875, 375)" class="edgeLabel">
<g transform="translate(-28.6875, -9)" class="label">
<foreignObject height="18" width="57.375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+astring</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(105.9921875, 121)" class="edgeLabel">
<g transform="translate(-37.1328125, -9)" class="label">
<foreignObject height="18" width="74.265625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+aintstring</span>
</span>
</div>
</foreignObject>
</g>
</g>
</g>
<g class="nodes">
<a transform="translate(105.9921875, 566.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L7">
<g title="A" id="classId-C_0002222216618904514099-0" class="node default clickable">
<rect height="101" width="99.953125" y="-50.5" x="-49.9765625" class="outer title-state"/>
<line y2="-20.5" y1="-20.5" x2="49.9765625" x1="-49.9765625" class="divider"/>
<line y2="39.5" y1="39.5" x2="49.9765625" x1="-49.9765625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -26.6796875, -43)" height="18" width="53.359375" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A&lt;T,P&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -42.4765625, -9)" height="18" width="57.9375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+first : T</span>
</div>
</foreignObject>
<foreignObject transform="translate( -42.4765625, 13)" height="18" width="84.953125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+second : P</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(105.9921875, 437.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L7">
<g title="A" id="classId-C_0001861520693741915300-1" class="node default clickable">
<rect height="57" width="136.796875" y="-28.5" x="-68.3984375" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="68.3984375" x1="-68.3984375" class="divider"/>
<line y2="17.5" y1="17.5" x2="68.3984375" x1="-68.3984375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -60.8984375, -21)" height="18" width="121.796875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A&lt;T,std::string&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(105.9921875, 301.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L13">
<g title="B" id="classId-C_0002303611426082708583-2" class="node default clickable">
<rect height="79" width="195.984375" y="-39.5" x="-97.9921875" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="97.9921875" x1="-97.9921875" class="divider"/>
<line y2="28.5" y1="28.5" x2="97.9921875" x1="-97.9921875" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -20.0078125, -32)" height="18" width="40.015625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">B&lt;T&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -90.4921875, 2)" height="18" width="180.984375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+astring : A&lt;T,std::string&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(105.9921875, 183.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L13">
<g title="B" id="classId-C_0001498376939480949099-3" class="node default clickable">
<rect height="57" width="64.796875" y="-28.5" x="-32.3984375" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="32.3984375" x1="-32.3984375" class="divider"/>
<line y2="17.5" y1="17.5" x2="32.3984375" x1="-32.3984375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -24.8984375, -21)" height="18" width="49.796875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">B&lt;int&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(105.9921875, 47.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00010/t00010.cc#L18">
<g title="C" id="classId-C_0001880966578968892571-4" class="node default clickable">
<rect height="79" width="148.859375" y="-39.5" x="-74.4296875" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="74.4296875" x1="-74.4296875" class="divider"/>
<line y2="28.5" y1="28.5" x2="74.4296875" x1="-74.4296875" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -32)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">C</span>
</div>
</foreignObject>
<foreignObject transform="translate( -66.9296875, 2)" height="18" width="133.859375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+aintstring : B&lt;int&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -2,7 +2,7 @@
## Config
```yaml
compilation_database_dir: ..
output_directory: puml
output_directory: diagrams
diagrams:
t00011_class:
type: class
@@ -19,8 +19,7 @@ diagrams:
File t00011.cc
```cpp
namespace external {
class C {
};
class C { };
}
namespace clanguml {
@@ -33,7 +32,7 @@ template <typename T> class D {
};
class A {
private:
public:
void foo() { }
friend class B;
friend class external::C;
@@ -49,9 +48,193 @@ public:
void foo() { m_a->foo(); }
A *m_a;
};
}
}
} // namespace t00011
} // namespace clanguml
```
## Generated UML diagrams
## Generated PlantUML diagrams
![t00011_class](./t00011_class.svg "Friend relationships")
## Generated Mermaid diagrams
![t00011_class](./t00011_class_mermaid.svg "Friend relationships")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00011::D<T>",
"id": "1150639902748052276",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [
{
"access": "private",
"is_static": false,
"name": "value",
"source_location": {
"column": 7,
"file": "../../tests/t00011/t00011.cc",
"line": 11,
"translation_unit": "../../tests/t00011/t00011.cc"
},
"type": "T"
}
],
"methods": [],
"name": "D",
"namespace": "clanguml::t00011",
"source_location": {
"column": 29,
"file": "../../tests/t00011/t00011.cc",
"line": 10,
"translation_unit": "../../tests/t00011/t00011.cc"
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00011::A",
"id": "1420516952857803719",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [
{
"access": "public",
"is_const": false,
"is_consteval": false,
"is_constexpr": false,
"is_constructor": false,
"is_copy_assignment": 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": "foo",
"parameters": [],
"source_location": {
"column": 10,
"file": "../../tests/t00011/t00011.cc",
"line": 16,
"translation_unit": "../../tests/t00011/t00011.cc"
},
"type": "void"
}
],
"name": "A",
"namespace": "clanguml::t00011",
"source_location": {
"column": 7,
"file": "../../tests/t00011/t00011.cc",
"line": 14,
"translation_unit": "../../tests/t00011/t00011.cc"
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00011::B",
"id": "1687427603952049829",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "m_a",
"source_location": {
"column": 8,
"file": "../../tests/t00011/t00011.cc",
"line": 29,
"translation_unit": "../../tests/t00011/t00011.cc"
},
"type": "A *"
}
],
"methods": [
{
"access": "public",
"is_const": false,
"is_consteval": false,
"is_constexpr": false,
"is_constructor": false,
"is_copy_assignment": 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": "foo",
"parameters": [],
"source_location": {
"column": 10,
"file": "../../tests/t00011/t00011.cc",
"line": 28,
"translation_unit": "../../tests/t00011/t00011.cc"
},
"type": "void"
}
],
"name": "B",
"namespace": "clanguml::t00011",
"source_location": {
"column": 7,
"file": "../../tests/t00011/t00011.cc",
"line": 26,
"translation_unit": "../../tests/t00011/t00011.cc"
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.4.0-32-g701b2c5",
"llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)",
"schema_version": 1
},
"name": "t00011_class",
"relationships": [
{
"access": "public",
"destination": "1687427603952049829",
"label": "<<friend>>",
"source": "1420516952857803719",
"type": "friendship"
},
{
"access": "public",
"destination": "1420516952857803719",
"label": "m_a",
"source": "1687427603952049829",
"type": "association"
}
],
"using_namespace": "clanguml::t00011"
}
```

View File

@@ -1,6 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="230px" preserveAspectRatio="none" style="width:226px;height:230px;" version="1.1" viewBox="0 0 226 230" width="226px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="fm6xtz1jsxk4z" width="300%" x="-1" y="-1">
<filter height="300%" id="fxuhzqnziixxo" width="300%" x="-1" y="-1">
<feGaussianBlur result="blurOut" stdDeviation="2.0"/>
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
@@ -9,65 +9,65 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L11" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L11" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fm6xtz1jsxk4z)" height="60.8047" id="C_0000000433" style="stroke: #A80036; stroke-width: 1.5;" width="75" x="6" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L10" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L10" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fxuhzqnziixxo)" height="60.8047" id="C_0001150639902748052276" style="stroke: #A80036; stroke-width: 1.5;" width="75" x="6" y="8"/>
<ellipse cx="31.35" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M34.3188,29.6406 Q33.7406,29.9375 33.1,30.0781 Q32.4594,30.2344 31.7563,30.2344 Q29.2563,30.2344 27.9281,28.5938 Q26.6156,26.9375 26.6156,23.8125 Q26.6156,20.6875 27.9281,19.0313 Q29.2563,17.375 31.7563,17.375 Q32.4594,17.375 33.1,17.5313 Q33.7563,17.6875 34.3188,17.9844 L34.3188,20.7031 Q33.6938,20.125 33.1,19.8594 Q32.5063,19.5781 31.8813,19.5781 Q30.5375,19.5781 29.85,20.6563 Q29.1625,21.7188 29.1625,23.8125 Q29.1625,25.9063 29.85,26.9844 Q30.5375,28.0469 31.8813,28.0469 Q32.5063,28.0469 33.1,27.7813 Q33.6938,27.5 34.3188,26.9219 L34.3188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="47.65" y="28.1543">D</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="75" y="5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="76" y="17.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="80" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="80" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L12" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L12" xlink:show="new" xlink:title="value" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="46"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="48"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L11" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L11" xlink:show="new" xlink:title="value" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="54"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="56"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L12" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L12" xlink:show="new" xlink:title="value" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="26" y="54.2104">value : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L11" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L11" xlink:show="new" xlink:title="value" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="26" y="62.2104">value : T</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="80" y1="60.8047" y2="60.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L15" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L15" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fm6xtz1jsxk4z)" height="60.8047" id="C_0000000437" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="116" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L14" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L14" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fxuhzqnziixxo)" height="60.8047" id="C_0001420516952857803719" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="116" y="8"/>
<ellipse cx="152.15" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M155.1188,29.6406 Q154.5406,29.9375 153.9,30.0781 Q153.2594,30.2344 152.5563,30.2344 Q150.0563,30.2344 148.7281,28.5938 Q147.4156,26.9375 147.4156,23.8125 Q147.4156,20.6875 148.7281,19.0313 Q150.0563,17.375 152.5563,17.375 Q153.2594,17.375 153.9,17.5313 Q154.5563,17.6875 155.1188,17.9844 L155.1188,20.7031 Q154.4938,20.125 153.9,19.8594 Q153.3063,19.5781 152.6813,19.5781 Q151.3375,19.5781 150.65,20.6563 Q149.9625,21.7188 149.9625,23.8125 Q149.9625,25.9063 150.65,26.9844 Q151.3375,28.0469 152.6813,28.0469 Q153.3063,28.0469 153.9,27.7813 Q154.4938,27.5 155.1188,26.9219 L155.1188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="170.85" y="28.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="117" x2="202" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="117" x2="202" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L17" target="_top" title="foo" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L17" xlink:show="new" xlink:title="foo" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="122" y="54"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="124" y="56"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L16" target="_top" title="foo" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L16" xlink:show="new" xlink:title="foo" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="122" y="46"/>
<ellipse cx="127" cy="51" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L17" target="_top" title="foo" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L17" xlink:show="new" xlink:title="foo" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="61" x="136" y="62.2104">foo() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L16" target="_top" title="foo" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L16" xlink:show="new" xlink:title="foo" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="61" x="136" y="54.2104">foo() : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L27" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L27" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fm6xtz1jsxk4z)" height="73.6094" id="C_0000000443" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="116" y="146"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="117" x2="202" y1="60.8047" y2="60.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L26" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L26" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fxuhzqnziixxo)" height="73.6094" id="C_0001687427603952049829" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="116" y="146"/>
<ellipse cx="152.15" cy="162" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M155.1188,167.6406 Q154.5406,167.9375 153.9,168.0781 Q153.2594,168.2344 152.5563,168.2344 Q150.0563,168.2344 148.7281,166.5938 Q147.4156,164.9375 147.4156,161.8125 Q147.4156,158.6875 148.7281,157.0313 Q150.0563,155.375 152.5563,155.375 Q153.2594,155.375 153.9,155.5313 Q154.5563,155.6875 155.1188,155.9844 L155.1188,158.7031 Q154.4938,158.125 153.9,157.8594 Q153.3063,157.5781 152.6813,157.5781 Q151.3375,157.5781 150.65,158.6563 Q149.9625,159.7188 149.9625,161.8125 Q149.9625,163.9063 150.65,164.9844 Q151.3375,166.0469 152.6813,166.0469 Q153.3063,166.0469 153.9,165.7813 Q154.4938,165.5 155.1188,164.9219 L155.1188,167.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="170.85" y="166.1543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="117" x2="202" y1="178" y2="178"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L30" target="_top" title="m_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L30" xlink:show="new" xlink:title="m_a" xlink:type="simple">
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L28" target="_top" title="foo" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L28" xlink:show="new" xlink:title="foo" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="122" y="184"/>
<ellipse cx="127" cy="189" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<ellipse cx="127" cy="189" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L30" target="_top" title="m_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L30" xlink:show="new" xlink:title="m_a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="136" y="192.2104">m_a : A*</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L28" target="_top" title="foo" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L28" xlink:show="new" xlink:title="foo" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="61" x="136" y="192.2104">foo() : void</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="117" x2="202" y1="198.8047" y2="198.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L29" target="_top" title="foo" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L29" xlink:show="new" xlink:title="foo" xlink:type="simple">
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L29" target="_top" title="m_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L29" xlink:show="new" xlink:title="m_a" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="122" y="204.8047"/>
<ellipse cx="127" cy="209.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<ellipse cx="127" cy="209.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L29" target="_top" title="foo" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00011/t00011.cc#L29" xlink:show="new" xlink:title="foo" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="61" x="136" y="213.0151">foo() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L29" target="_top" title="m_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L29" xlink:show="new" xlink:title="m_a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="53" x="136" y="213.0151">m_a : A *</text>
</a>
<path d="M116.04,73.01 C105.09,85.59 97.85,100.6 103.5,116 C107.44,126.72 113.97,136.89 121.21,145.9 " fill="none" id="C_0000000437&lt;-C_0000000443" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M116.04,73.01 C105.09,85.59 97.85,100.6 103.5,116 C107.44,126.72 113.97,136.89 121.21,145.9 " fill="none" id="C_0001420516952857803719&lt;-C_0001687427603952049829" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="119.54,69.18,110.5057,73.102,116.1575,72.8622,116.3973,78.514,119.54,69.18" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="106.5" y="105.0664"/>
<ellipse cx="109.5" cy="108.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="52" x="116.5" y="112.0669">«friend»</text>
<path d="M170.13,145.75 C173.19,131.26 175.29,114.39 173.5,99 C172.56,90.88 170.92,82.26 169.08,74.18 " fill="none" id="C_0000000443-&gt;C_0000000437" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M170.13,145.75 C173.19,131.26 175.29,114.39 173.5,99 C172.56,90.88 170.92,82.26 169.08,74.18 " fill="none" id="C_0001687427603952049829-&gt;C_0001420516952857803719" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="167.92,69.22,166.0877,78.8969,169.0652,74.0871,173.875,77.0646,167.92,69.22" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="179.5" cy="108.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="28" x="186.5" y="112.0669">m_a</text>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,161 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" aria-roledescription="classDiagram" role="graphics-document document" viewBox="0 0 252.29296875 264" style="max-width: 252.293px; background-color: white;" width="252.29296875" id="my-svg">
<style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#my-svg g.classGroup text .title{font-weight:bolder;}#my-svg .nodeLabel,#my-svg .edgeLabel{color:#131300;}#my-svg .edgeLabel .label rect{fill:#ECECFF;}#my-svg .label text{fill:#131300;}#my-svg .edgeLabel .label span{background:#ECECFF;}#my-svg .classTitle{font-weight:bolder;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .divider{stroke:#9370DB;stroke-width:1;}#my-svg g.clickable{cursor:pointer;}#my-svg g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#my-svg g.classGroup line{stroke:#9370DB;stroke-width:1;}#my-svg .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#my-svg .classLabel .label{fill:#9370DB;font-size:10px;}#my-svg .relation{stroke:#333333;stroke-width:1;fill:none;}#my-svg .dashed-line{stroke-dasharray:3;}#my-svg .dotted-line{stroke-dasharray:1 2;}#my-svg #compositionStart,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #compositionEnd,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionStart,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionEnd,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationStart,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationEnd,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopStart,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopEnd,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg .edgeTerminals{font-size:11px;}#my-svg .classTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style>
<g>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker aggregation classDiagram" id="classDiagram-aggregationStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker aggregation classDiagram" id="classDiagram-aggregationEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker extension classDiagram" id="classDiagram-extensionStart">
<path d="M 1,7 L18,13 V 1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker extension classDiagram" id="classDiagram-extensionEnd">
<path d="M 1,1 V 13 L18,7 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker composition classDiagram" id="classDiagram-compositionStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker composition classDiagram" id="classDiagram-compositionEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker dependency classDiagram" id="classDiagram-dependencyStart">
<path d="M 5,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker dependency classDiagram" id="classDiagram-dependencyEnd">
<path d="M 18,7 L9,13 L14,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker lollipop classDiagram" id="classDiagram-lollipopStart">
<circle r="6" cy="7" cx="6" fill="white" stroke="black"/>
</marker>
</defs>
<g class="root">
<g class="clusters"/>
<g class="edgePaths">
<path marker-start="url(#classDiagram-dependencyStart)" style="fill:none" class="edge-pattern-dashed relation" id="id1" d="M170.73551764455783,87L168.0614990787982,92.66666666666667C165.38748051303855,98.33333333333333,160.03944338151928,109.66666666666667,159.69134629011862,121C159.34324919871793,132.33333333333334,163.99509214743588,143.66666666666666,166.32101362179486,149.33333333333334L168.64693509615384,155"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id2" d="M210.10306490384616,155L212.4289863782051,149.33333333333334C214.75490785256412,143.66666666666666,219.40675080128207,132.33333333333334,219.05865370988138,121C218.71055661848072,109.66666666666667,213.36251948696145,98.33333333333333,210.6885009212018,92.66666666666667L208.01448235544217,87"/>
</g>
<g class="edgeLabels">
<g transform="translate(154.69140625, 121)" class="edgeLabel">
<g transform="translate(-29.1328125, -9)" class="label">
<foreignObject height="18" width="58.265625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+[friend]</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(224.05859375, 121)" class="edgeLabel">
<g transform="translate(-20.234375, -9)" class="label">
<foreignObject height="18" width="40.46875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">+m_a</span>
</span>
</div>
</foreignObject>
</g>
</g>
</g>
<g class="nodes">
<a transform="translate(48.703125, 47.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L10">
<g title="D" id="classId-C_0001150639902748052276-0" class="node default clickable">
<rect height="79" width="81.40625" y="-39.5" x="-40.703125" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="40.703125" x1="-40.703125" class="divider"/>
<line y2="28.5" y1="28.5" x2="40.703125" x1="-40.703125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -20.0078125, -32)" height="18" width="40.015625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">D&lt;T&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -33.203125, 2)" height="18" width="66.40625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-value : T</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(189.375, 47.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L14">
<g title="A" id="classId-C_0001420516952857803719-1" class="node default clickable">
<rect height="79" width="99.9375" y="-39.5" x="-49.96875" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="49.96875" x1="-49.96875" class="divider"/>
<line y2="6.5" y1="6.5" x2="49.96875" x1="-49.96875" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -32)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A</span>
</div>
</foreignObject>
<foreignObject transform="translate( -42.46875, 14)" height="18" width="84.9375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+foo() : void</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(189.375, 205.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00011/t00011.cc#L26">
<g title="B" id="classId-C_0001687427603952049829-2" class="node default clickable">
<rect height="101" width="99.9375" y="-50.5" x="-49.96875" class="outer title-state"/>
<line y2="-20.5" y1="-20.5" x2="49.96875" x1="-49.96875" class="divider"/>
<line y2="17.5" y1="17.5" x2="49.96875" x1="-49.96875" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -43)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">B</span>
</div>
</foreignObject>
<foreignObject transform="translate( -42.46875, -9)" height="18" width="63.890625">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-style: italic; display: inline-block; white-space: nowrap;">
<span style="font-style:italic;" class="nodeLabel">+m_a : A </span>
</div>
</foreignObject>
<foreignObject transform="translate( -42.46875, 25)" height="18" width="84.9375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+foo() : void</span>
</div>
</foreignObject>
</g>
</g>
</a>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="390px" preserveAspectRatio="none" style="width:1362px;height:390px;" version="1.1" viewBox="0 0 1362 390" width="1362px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="fczk1w9iknhb5" width="300%" x="-1" y="-1">
<filter height="300%" id="f1qqimxqrhcrum" width="300%" x="-1" y="-1">
<feGaussianBlur result="blurOut" stdDeviation="2.0"/>
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
@@ -9,177 +9,187 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L11" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L11" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fczk1w9iknhb5)" height="73.6094" id="C_0000000449" style="stroke: #A80036; stroke-width: 1.5;" width="89" x="869.5" y="306"/>
<ellipse cx="888.55" cy="322" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M891.5188,327.6406 Q890.9406,327.9375 890.3,328.0781 Q889.6594,328.2344 888.9563,328.2344 Q886.4563,328.2344 885.1281,326.5938 Q883.8156,324.9375 883.8156,321.8125 Q883.8156,318.6875 885.1281,317.0313 Q886.4563,315.375 888.9563,315.375 Q889.6594,315.375 890.3,315.5313 Q890.9563,315.6875 891.5188,315.9844 L891.5188,318.7031 Q890.8938,318.125 890.3,317.8594 Q889.7063,317.5781 889.0813,317.5781 Q887.7375,317.5781 887.05,318.6563 Q886.3625,319.7188 886.3625,321.8125 Q886.3625,323.9063 887.05,324.9844 Q887.7375,326.0469 889.0813,326.0469 Q889.7063,326.0469 890.3,325.7813 Q890.8938,325.5 891.5188,324.9219 L891.5188,327.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="903.45" y="326.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="38" x="923.5" y="303"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="36" x="924.5" y="315.1387">T,Ts...</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="870.5" x2="957.5" y1="338" y2="338"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L11" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L11" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qqimxqrhcrum)" height="73.6094" id="C_0001773299890023132282" style="stroke: #A80036; stroke-width: 1.5;" width="184" x="822" y="306"/>
<ellipse cx="885.75" cy="322" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M888.7188,327.6406 Q888.1406,327.9375 887.5,328.0781 Q886.8594,328.2344 886.1563,328.2344 Q883.6563,328.2344 882.3281,326.5938 Q881.0156,324.9375 881.0156,321.8125 Q881.0156,318.6875 882.3281,317.0313 Q883.6563,315.375 886.1563,315.375 Q886.8594,315.375 887.5,315.5313 Q888.1563,315.6875 888.7188,315.9844 L888.7188,318.7031 Q888.0938,318.125 887.5,317.8594 Q886.9063,317.5781 886.2813,317.5781 Q884.9375,317.5781 884.25,318.6563 Q883.5625,319.7188 883.5625,321.8125 Q883.5625,323.9063 884.25,324.9844 Q884.9375,326.0469 886.2813,326.0469 Q886.9063,326.0469 887.5,325.7813 Q888.0938,325.5 888.7188,324.9219 L888.7188,327.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="906.25" y="326.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="38" x="971" y="303"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="36" x="972" y="315.1387">T,Ts...</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="823" x2="1005" y1="338" y2="338"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="823" x2="1005" y1="346" y2="346"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L12" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L12" xlink:show="new" xlink:title="value" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="875.5" y="344"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="877.5" y="346"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L12" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L12" xlink:show="new" xlink:title="value" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="828" y="352"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="830" y="354"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L12" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L12" xlink:show="new" xlink:title="value" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="889.5" y="352.2104">value : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L12" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L12" xlink:show="new" xlink:title="value" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="842" y="360.2104">value : T</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L13" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L13" xlink:show="new" xlink:title="values" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="875.5" y="356.8047"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="877.5" y="358.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L13" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L13" xlink:show="new" xlink:title="values" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="828" y="364.8047"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="830" y="366.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L13" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L13" xlink:show="new" xlink:title="values" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="63" x="889.5" y="365.0151">values : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L13" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L13" xlink:show="new" xlink:title="values" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="158" x="842" y="373.0151">values : std::variant&lt;Ts...&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="870.5" x2="957.5" y1="371.6094" y2="371.6094"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L16" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L16" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fczk1w9iknhb5)" height="60.8047" id="C_0000000453" style="stroke: #A80036; stroke-width: 1.5;" width="214" x="1134" y="312.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L16" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L16" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qqimxqrhcrum)" height="60.8047" id="C_0002061171077567279746" style="stroke: #A80036; stroke-width: 1.5;" width="214" x="1134" y="312.5"/>
<ellipse cx="1209.75" cy="328.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1212.7188,334.1406 Q1212.1406,334.4375 1211.5,334.5781 Q1210.8594,334.7344 1210.1563,334.7344 Q1207.6563,334.7344 1206.3281,333.0938 Q1205.0156,331.4375 1205.0156,328.3125 Q1205.0156,325.1875 1206.3281,323.5313 Q1207.6563,321.875 1210.1563,321.875 Q1210.8594,321.875 1211.5,322.0313 Q1212.1563,322.1875 1212.7188,322.4844 L1212.7188,325.2031 Q1212.0938,324.625 1211.5,324.3594 Q1210.9063,324.0781 1210.2813,324.0781 Q1208.9375,324.0781 1208.25,325.1563 Q1207.5625,326.2188 1207.5625,328.3125 Q1207.5625,330.4063 1208.25,331.4844 Q1208.9375,332.5469 1210.2813,332.5469 Q1210.9063,332.5469 1211.5,332.2813 Q1212.0938,332 1212.7188,331.4219 L1212.7188,334.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="1230.25" y="332.6543">B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="44" x="1307" y="309.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="42" x="1308" y="321.6387">int Is...</text>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="42" x="1308" y="321.6387">int... Is</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1135" x2="1347" y1="344.5" y2="344.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1135" x2="1347" y1="352.5" y2="352.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L17" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L17" xlink:show="new" xlink:title="ints" xlink:type="simple">
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L17" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L17" xlink:show="new" xlink:title="ints" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="1140" y="358.5"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="1142" y="360.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L17" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L17" xlink:show="new" xlink:title="ints" xlink:type="simple">
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L17" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L17" xlink:show="new" xlink:title="ints" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="188" x="1154" y="366.7104">ints : std::array&lt;int,sizeof...(Is)&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L20" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L20" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fczk1w9iknhb5)" height="60.8047" id="C_0000000463" style="stroke: #A80036; stroke-width: 1.5;" width="207" x="149.5" y="312.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L20" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L20" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qqimxqrhcrum)" height="60.8047" id="C_0000627809578407650629" style="stroke: #A80036; stroke-width: 1.5;" width="207" x="149.5" y="312.5"/>
<ellipse cx="216.25" cy="328.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M219.2188,334.1406 Q218.6406,334.4375 218,334.5781 Q217.3594,334.7344 216.6563,334.7344 Q214.1563,334.7344 212.8281,333.0938 Q211.5156,331.4375 211.5156,328.3125 Q211.5156,325.1875 212.8281,323.5313 Q214.1563,321.875 216.6563,321.875 Q217.3594,321.875 218,322.0313 Q218.6563,322.1875 219.2188,322.4844 L219.2188,325.2031 Q218.5938,324.625 218,324.3594 Q217.4063,324.0781 216.7813,324.0781 Q215.4375,324.0781 214.75,325.1563 Q214.0625,326.2188 214.0625,328.3125 Q214.0625,330.4063 214.75,331.4844 Q215.4375,332.5469 216.7813,332.5469 Q217.4063,332.5469 218,332.2813 Q218.5938,332 219.2188,331.4219 L219.2188,334.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="236.75" y="332.6543">C</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="55" x="304.5" y="309.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="53" x="305.5" y="321.6387">T,int Is...</text>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="53" x="305.5" y="321.6387">T,int... Is</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="150.5" x2="355.5" y1="344.5" y2="344.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="150.5" x2="355.5" y1="352.5" y2="352.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L21" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L21" xlink:show="new" xlink:title="ints" xlink:type="simple">
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L21" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L21" xlink:show="new" xlink:title="ints" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="155.5" y="358.5"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="157.5" y="360.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L21" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L21" xlink:show="new" xlink:title="ints" xlink:type="simple">
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L21" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L21" xlink:show="new" xlink:title="ints" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="181" x="169.5" y="366.7104">ints : std::array&lt;T,sizeof...(Is)&gt;</text>
</a>
<rect fill="#FEFECE" filter="url(#fczk1w9iknhb5)" height="48" id="C_0000000474" style="stroke: #A80036; stroke-width: 1.5;" width="158" x="758" y="197"/>
<ellipse cx="773" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M775.9688,218.6406 Q775.3906,218.9375 774.75,219.0781 Q774.1094,219.2344 773.4063,219.2344 Q770.9063,219.2344 769.5781,217.5938 Q768.2656,215.9375 768.2656,212.8125 Q768.2656,209.6875 769.5781,208.0313 Q770.9063,206.375 773.4063,206.375 Q774.1094,206.375 774.75,206.5313 Q775.4063,206.6875 775.9688,206.9844 L775.9688,209.7031 Q775.3438,209.125 774.75,208.8594 Q774.1563,208.5781 773.5313,208.5781 Q772.1875,208.5781 771.5,209.6563 Q770.8125,210.7188 770.8125,212.8125 Q770.8125,214.9063 771.5,215.9844 Q772.1875,217.0469 773.5313,217.0469 Q774.1563,217.0469 774.75,216.7813 Q775.3438,216.5 775.9688,215.9219 L775.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="787" y="217.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="116" x="803" y="194"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="114" x="804" y="206.1387">int,std::string,float</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="759" x2="915" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="759" x2="915" y1="237" y2="237"/>
<rect fill="#FEFECE" filter="url(#fczk1w9iknhb5)" height="48" id="C_0000000477" style="stroke: #A80036; stroke-width: 1.5;" width="157" x="951.5" y="197"/>
<ellipse cx="966.5" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M969.4688,218.6406 Q968.8906,218.9375 968.25,219.0781 Q967.6094,219.2344 966.9063,219.2344 Q964.4063,219.2344 963.0781,217.5938 Q961.7656,215.9375 961.7656,212.8125 Q961.7656,209.6875 963.0781,208.0313 Q964.4063,206.375 966.9063,206.375 Q967.6094,206.375 968.25,206.5313 Q968.9063,206.6875 969.4688,206.9844 L969.4688,209.7031 Q968.8438,209.125 968.25,208.8594 Q967.6563,208.5781 967.0313,208.5781 Q965.6875,208.5781 965,209.6563 Q964.3125,210.7188 964.3125,212.8125 Q964.3125,214.9063 965,215.9844 Q965.6875,217.0469 967.0313,217.0469 Q967.6563,217.0469 968.25,216.7813 Q968.8438,216.5 969.4688,215.9219 L969.4688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="980.5" y="217.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="115" x="996.5" y="194"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="113" x="997.5" y="206.1387">int,std::string,bool</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="952.5" x2="1107.5" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="952.5" x2="1107.5" y1="237" y2="237"/>
<rect fill="#FEFECE" filter="url(#fczk1w9iknhb5)" height="48" id="C_0000000480" style="stroke: #A80036; stroke-width: 1.5;" width="76" x="1144" y="197"/>
<ellipse cx="1159" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1161.9688,218.6406 Q1161.3906,218.9375 1160.75,219.0781 Q1160.1094,219.2344 1159.4063,219.2344 Q1156.9063,219.2344 1155.5781,217.5938 Q1154.2656,215.9375 1154.2656,212.8125 Q1154.2656,209.6875 1155.5781,208.0313 Q1156.9063,206.375 1159.4063,206.375 Q1160.1094,206.375 1160.75,206.5313 Q1161.4063,206.6875 1161.9688,206.9844 L1161.9688,209.7031 Q1161.3438,209.125 1160.75,208.8594 Q1160.1563,208.5781 1159.5313,208.5781 Q1158.1875,208.5781 1157.5,209.6563 Q1156.8125,210.7188 1156.8125,212.8125 Q1156.8125,214.9063 1157.5,215.9844 Q1158.1875,217.0469 1159.5313,217.0469 Q1160.1563,217.0469 1160.75,216.7813 Q1161.3438,216.5 1161.9688,215.9219 L1161.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="1173" y="217.1543">B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="34" x="1189" y="194"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="32" x="1190" y="206.1387">3,2,1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1145" x2="1219" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1145" x2="1219" y1="237" y2="237"/>
<rect fill="#FEFECE" filter="url(#fczk1w9iknhb5)" height="48" id="C_0000000483" style="stroke: #A80036; stroke-width: 1.5;" width="88" x="1255" y="197"/>
<ellipse cx="1270" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1272.9688,218.6406 Q1272.3906,218.9375 1271.75,219.0781 Q1271.1094,219.2344 1270.4063,219.2344 Q1267.9063,219.2344 1266.5781,217.5938 Q1265.2656,215.9375 1265.2656,212.8125 Q1265.2656,209.6875 1266.5781,208.0313 Q1267.9063,206.375 1270.4063,206.375 Q1271.1094,206.375 1271.75,206.5313 Q1272.4063,206.6875 1272.9688,206.9844 L1272.9688,209.7031 Q1272.3438,209.125 1271.75,208.8594 Q1271.1563,208.5781 1270.5313,208.5781 Q1269.1875,208.5781 1268.5,209.6563 Q1267.8125,210.7188 1267.8125,212.8125 Q1267.8125,214.9063 1268.5,215.9844 Q1269.1875,217.0469 1270.5313,217.0469 Q1271.1563,217.0469 1271.75,216.7813 Q1272.3438,216.5 1272.9688,215.9219 L1272.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="1284" y="217.1543">B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="46" x="1300" y="194"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="44" x="1301" y="206.1387">1,1,1,1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1256" x2="1342" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1256" x2="1342" y1="237" y2="237"/>
<rect fill="#FEFECE" filter="url(#fczk1w9iknhb5)" height="48" id="C_0000000486" style="stroke: #A80036; stroke-width: 1.5;" width="494" x="6" y="197"/>
<ellipse cx="21" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,218.6406 Q23.3906,218.9375 22.75,219.0781 Q22.1094,219.2344 21.4063,219.2344 Q18.9063,219.2344 17.5781,217.5938 Q16.2656,215.9375 16.2656,212.8125 Q16.2656,209.6875 17.5781,208.0313 Q18.9063,206.375 21.4063,206.375 Q22.1094,206.375 22.75,206.5313 Q23.4063,206.6875 23.9688,206.9844 L23.9688,209.7031 Q23.3438,209.125 22.75,208.8594 Q22.1563,208.5781 21.5313,208.5781 Q20.1875,208.5781 19.5,209.6563 Q18.8125,210.7188 18.8125,212.8125 Q18.8125,214.9063 19.5,215.9844 Q20.1875,217.0469 21.5313,217.0469 Q22.1563,217.0469 22.75,216.7813 Q23.3438,216.5 23.9688,215.9219 L23.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="35" y="217.1543">C</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="452" x="51" y="194"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="450" x="52" y="206.1387">std::map&lt;int,std::vector&lt;std::vector&lt;std::vector&lt;std::string&gt;&gt;&gt;&gt;,3,3,3</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="499" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="499" y1="237" y2="237"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L24" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L24" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fczk1w9iknhb5)" height="112.0234" id="C_0000000473" style="stroke: #A80036; stroke-width: 1.5;" width="493" x="783.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L11" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L11" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qqimxqrhcrum)" height="48" id="C_0000286972398942005457" style="stroke: #A80036; stroke-width: 1.5;" width="158" x="758" y="197"/>
<ellipse cx="773" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M775.9688,218.6406 Q775.3906,218.9375 774.75,219.0781 Q774.1094,219.2344 773.4063,219.2344 Q770.9063,219.2344 769.5781,217.5938 Q768.2656,215.9375 768.2656,212.8125 Q768.2656,209.6875 769.5781,208.0313 Q770.9063,206.375 773.4063,206.375 Q774.1094,206.375 774.75,206.5313 Q775.4063,206.6875 775.9688,206.9844 L775.9688,209.7031 Q775.3438,209.125 774.75,208.8594 Q774.1563,208.5781 773.5313,208.5781 Q772.1875,208.5781 771.5,209.6563 Q770.8125,210.7188 770.8125,212.8125 Q770.8125,214.9063 771.5,215.9844 Q772.1875,217.0469 773.5313,217.0469 Q774.1563,217.0469 774.75,216.7813 Q775.3438,216.5 775.9688,215.9219 L775.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="787" y="217.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="116" x="803" y="194"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="114" x="804" y="206.1387">int,std::string,float</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="759" x2="915" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="759" x2="915" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L11" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L11" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qqimxqrhcrum)" height="48" id="C_0000299466181098300963" style="stroke: #A80036; stroke-width: 1.5;" width="157" x="951.5" y="197"/>
<ellipse cx="966.5" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M969.4688,218.6406 Q968.8906,218.9375 968.25,219.0781 Q967.6094,219.2344 966.9063,219.2344 Q964.4063,219.2344 963.0781,217.5938 Q961.7656,215.9375 961.7656,212.8125 Q961.7656,209.6875 963.0781,208.0313 Q964.4063,206.375 966.9063,206.375 Q967.6094,206.375 968.25,206.5313 Q968.9063,206.6875 969.4688,206.9844 L969.4688,209.7031 Q968.8438,209.125 968.25,208.8594 Q967.6563,208.5781 967.0313,208.5781 Q965.6875,208.5781 965,209.6563 Q964.3125,210.7188 964.3125,212.8125 Q964.3125,214.9063 965,215.9844 Q965.6875,217.0469 967.0313,217.0469 Q967.6563,217.0469 968.25,216.7813 Q968.8438,216.5 969.4688,215.9219 L969.4688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="980.5" y="217.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="115" x="996.5" y="194"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="113" x="997.5" y="206.1387">int,std::string,bool</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="952.5" x2="1107.5" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="952.5" x2="1107.5" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L16" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L16" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qqimxqrhcrum)" height="48" id="C_0000489063277971613593" style="stroke: #A80036; stroke-width: 1.5;" width="76" x="1144" y="197"/>
<ellipse cx="1159" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1161.9688,218.6406 Q1161.3906,218.9375 1160.75,219.0781 Q1160.1094,219.2344 1159.4063,219.2344 Q1156.9063,219.2344 1155.5781,217.5938 Q1154.2656,215.9375 1154.2656,212.8125 Q1154.2656,209.6875 1155.5781,208.0313 Q1156.9063,206.375 1159.4063,206.375 Q1160.1094,206.375 1160.75,206.5313 Q1161.4063,206.6875 1161.9688,206.9844 L1161.9688,209.7031 Q1161.3438,209.125 1160.75,208.8594 Q1160.1563,208.5781 1159.5313,208.5781 Q1158.1875,208.5781 1157.5,209.6563 Q1156.8125,210.7188 1156.8125,212.8125 Q1156.8125,214.9063 1157.5,215.9844 Q1158.1875,217.0469 1159.5313,217.0469 Q1160.1563,217.0469 1160.75,216.7813 Q1161.3438,216.5 1161.9688,215.9219 L1161.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="1173" y="217.1543">B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="34" x="1189" y="194"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="32" x="1190" y="206.1387">3,2,1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1145" x2="1219" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1145" x2="1219" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L16" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L16" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qqimxqrhcrum)" height="48" id="C_0000014232362483200599" style="stroke: #A80036; stroke-width: 1.5;" width="88" x="1255" y="197"/>
<ellipse cx="1270" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1272.9688,218.6406 Q1272.3906,218.9375 1271.75,219.0781 Q1271.1094,219.2344 1270.4063,219.2344 Q1267.9063,219.2344 1266.5781,217.5938 Q1265.2656,215.9375 1265.2656,212.8125 Q1265.2656,209.6875 1266.5781,208.0313 Q1267.9063,206.375 1270.4063,206.375 Q1271.1094,206.375 1271.75,206.5313 Q1272.4063,206.6875 1272.9688,206.9844 L1272.9688,209.7031 Q1272.3438,209.125 1271.75,208.8594 Q1271.1563,208.5781 1270.5313,208.5781 Q1269.1875,208.5781 1268.5,209.6563 Q1267.8125,210.7188 1267.8125,212.8125 Q1267.8125,214.9063 1268.5,215.9844 Q1269.1875,217.0469 1270.5313,217.0469 Q1271.1563,217.0469 1271.75,216.7813 Q1272.3438,216.5 1272.9688,215.9219 L1272.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="1284" y="217.1543">B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="46" x="1300" y="194"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="44" x="1301" y="206.1387">1,1,1,1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1256" x2="1342" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1256" x2="1342" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L20" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L20" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qqimxqrhcrum)" height="48" id="C_0001478239414632239754" style="stroke: #A80036; stroke-width: 1.5;" width="494" x="6" y="197"/>
<ellipse cx="21" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,218.6406 Q23.3906,218.9375 22.75,219.0781 Q22.1094,219.2344 21.4063,219.2344 Q18.9063,219.2344 17.5781,217.5938 Q16.2656,215.9375 16.2656,212.8125 Q16.2656,209.6875 17.5781,208.0313 Q18.9063,206.375 21.4063,206.375 Q22.1094,206.375 22.75,206.5313 Q23.4063,206.6875 23.9688,206.9844 L23.9688,209.7031 Q23.3438,209.125 22.75,208.8594 Q22.1563,208.5781 21.5313,208.5781 Q20.1875,208.5781 19.5,209.6563 Q18.8125,210.7188 18.8125,212.8125 Q18.8125,214.9063 19.5,215.9844 Q20.1875,217.0469 21.5313,217.0469 Q22.1563,217.0469 22.75,216.7813 Q23.3438,216.5 23.9688,215.9219 L23.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="35" y="217.1543">C</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="452" x="51" y="194"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="450" x="52" y="206.1387">std::map&lt;int,std::vector&lt;std::vector&lt;std::vector&lt;std::string&gt;&gt;&gt;&gt;,3,3,3</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="499" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="499" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L24" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L24" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qqimxqrhcrum)" height="112.0234" id="C_0000559263385732885469" style="stroke: #A80036; stroke-width: 1.5;" width="493" x="783.5" y="8"/>
<ellipse cx="1021.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1024.7188,29.6406 Q1024.1406,29.9375 1023.5,30.0781 Q1022.8594,30.2344 1022.1563,30.2344 Q1019.6563,30.2344 1018.3281,28.5938 Q1017.0156,26.9375 1017.0156,23.8125 Q1017.0156,20.6875 1018.3281,19.0313 Q1019.6563,17.375 1022.1563,17.375 Q1022.8594,17.375 1023.5,17.5313 Q1024.1563,17.6875 1024.7188,17.9844 L1024.7188,20.7031 Q1024.0938,20.125 1023.5,19.8594 Q1022.9063,19.5781 1022.2813,19.5781 Q1020.9375,19.5781 1020.25,20.6563 Q1019.5625,21.7188 1019.5625,23.8125 Q1019.5625,25.9063 1020.25,26.9844 Q1020.9375,28.0469 1022.2813,28.0469 Q1022.9063,28.0469 1023.5,27.7813 Q1024.0938,27.5 1024.7188,26.9219 L1024.7188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="1042.25" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="784.5" x2="1275.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="784.5" x2="1275.5" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L25" target="_top" title="a1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L25" xlink:show="new" xlink:title="a1" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="789.5" y="46"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="791.5" y="48"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L25" target="_top" title="a1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L25" xlink:show="new" xlink:title="a1" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="789.5" y="54"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="791.5" y="56"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L25" target="_top" title="a1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L25" xlink:show="new" xlink:title="a1" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="157" x="803.5" y="54.2104">a1 : A&lt;int,std::string,float&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L25" target="_top" title="a1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L25" xlink:show="new" xlink:title="a1" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="157" x="803.5" y="62.2104">a1 : A&lt;int,std::string,float&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L26" target="_top" title="a2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L26" xlink:show="new" xlink:title="a2" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="789.5" y="58.8047"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="791.5" y="60.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L26" target="_top" title="a2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L26" xlink:show="new" xlink:title="a2" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="789.5" y="66.8047"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="791.5" y="68.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L26" target="_top" title="a2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L26" xlink:show="new" xlink:title="a2" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="156" x="803.5" y="67.0151">a2 : A&lt;int,std::string,bool&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L26" target="_top" title="a2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L26" xlink:show="new" xlink:title="a2" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="156" x="803.5" y="75.0151">a2 : A&lt;int,std::string,bool&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L28" target="_top" title="b1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L28" xlink:show="new" xlink:title="b1" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="789.5" y="71.6094"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="791.5" y="73.6094"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L28" target="_top" title="b1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L28" xlink:show="new" xlink:title="b1" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="789.5" y="79.6094"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="791.5" y="81.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L28" target="_top" title="b1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L28" xlink:show="new" xlink:title="b1" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="81" x="803.5" y="79.8198">b1 : B&lt;3,2,1&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L28" target="_top" title="b1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L28" xlink:show="new" xlink:title="b1" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="81" x="803.5" y="87.8198">b1 : B&lt;3,2,1&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L29" target="_top" title="b2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L29" xlink:show="new" xlink:title="b2" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="789.5" y="84.4141"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="791.5" y="86.4141"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L29" target="_top" title="b2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L29" xlink:show="new" xlink:title="b2" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="789.5" y="92.4141"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="791.5" y="94.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L29" target="_top" title="b2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L29" xlink:show="new" xlink:title="b2" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="92" x="803.5" y="92.6245">b2 : B&lt;1,1,1,1&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L29" target="_top" title="b2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L29" xlink:show="new" xlink:title="b2" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="92" x="803.5" y="100.6245">b2 : B&lt;1,1,1,1&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L33" target="_top" title="c1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L33" xlink:show="new" xlink:title="c1" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="789.5" y="97.2188"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="791.5" y="99.2188"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L33" target="_top" title="c1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L33" xlink:show="new" xlink:title="c1" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="789.5" y="105.2188"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="791.5" y="107.2188"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L33" target="_top" title="c1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00012/t00012.cc#L33" xlink:show="new" xlink:title="c1" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="467" x="803.5" y="105.4292">c1 : C&lt;std::map&lt;int,std::vector&lt;std::vector&lt;std::vector&lt;std::string&gt;&gt;&gt;&gt;,3,3,3&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L33" target="_top" title="c1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L33" xlink:show="new" xlink:title="c1" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="467" x="803.5" y="113.4292">c1 : C&lt;std::map&lt;int,std::vector&lt;std::vector&lt;std::vector&lt;std::string&gt;&gt;&gt;&gt;,3,3,3&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="784.5" x2="1275.5" y1="112.0234" y2="112.0234"/>
<path d="M535.5,208.5 L535.5,217 L500.12,221 L535.5,225 L535.5,233.6328 A0,0 0 0 0 535.5,233.6328 L722.5,233.6328 A0,0 0 0 0 722.5,233.6328 L722.5,218.5 L712.5,208.5 L535.5,208.5 A0,0 0 0 0 535.5,208.5 " fill="#FBFB77" filter="url(#fczk1w9iknhb5)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M535.5,208.5 L535.5,217 L500.12,221 L535.5,225 L535.5,233.6328 A0,0 0 0 0 535.5,233.6328 L722.5,233.6328 A0,0 0 0 0 722.5,233.6328 L722.5,218.5 L712.5,208.5 L535.5,208.5 A0,0 0 0 0 535.5,208.5 " fill="#FBFB77" filter="url(#f1qqimxqrhcrum)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M712.5,208.5 L712.5,218.5 L722.5,218.5 L712.5,208.5 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="166" x="541.5" y="225.5669">Long template annotation</text>
<path d="M851.85,245.14 C859.85,257.61 870.07,273.55 879.91,288.88 " fill="none" id="C_0000000474-&gt;C_0000000449" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M851.85,245.14 C859.85,257.61 870.07,273.55 879.91,288.88 " fill="none" id="C_0000286972398942005457-&gt;C_0001773299890023132282" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="885.81,285.1,890.71,305.71,874.02,292.66,885.81,285.1" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1007.63,245.14 C995.06,258.14 978.84,274.92 963.44,290.85 " fill="none" id="C_0000000477-&gt;C_0000000449" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M1007.63,245.14 C995.06,258.14 978.84,274.92 963.44,290.85 " fill="none" id="C_0000299466181098300963-&gt;C_0001773299890023132282" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="968.01,296.2,949.08,305.71,957.95,286.47,968.01,296.2" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1193.38,245.14 C1200.19,258.99 1209.11,277.13 1217.38,293.96 " fill="none" id="C_0000000480-&gt;C_0000000453" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M1193.38,245.14 C1200.19,258.99 1209.11,277.13 1217.38,293.96 " fill="none" id="C_0000489063277971613593-&gt;C_0002061171077567279746" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="1223.76,291.07,1226.3,312.11,1211.2,297.25,1223.76,291.07" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1287.82,245.14 C1281.12,258.99 1272.35,277.13 1264.22,293.96 " fill="none" id="C_0000000483-&gt;C_0000000453" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M1287.82,245.14 C1281.12,258.99 1272.35,277.13 1264.22,293.96 " fill="none" id="C_0000014232362483200599-&gt;C_0002061171077567279746" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="1270.45,297.14,1255.45,312.11,1257.85,291.05,1270.45,297.14" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M253,245.14 C253,258.47 253,275.77 253,292.05 " fill="none" id="C_0000000486-&gt;C_0000000463" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M253,245.14 C253,258.47 253,275.77 253,292.05 " fill="none" id="C_0001478239414632239754-&gt;C_0000627809578407650629" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="260,292.11,253,312.11,246,292.11,260,292.11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M950.89,128.54 C920.8,152.7 888.38,178.73 865.86,196.83 " fill="none" id="C_0000000473&lt;-C_0000000474" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M950.89,128.54 C920.8,152.7 888.38,178.73 865.86,196.83 " fill="none" id="C_0000559263385732885469&lt;-C_0000286972398942005457" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="961.41,120.08,954.2275,120.722,952.0576,127.5988,959.2401,126.9569,961.41,120.08" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="925" y="156.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="935" y="163.0669">a1</text>
<path d="M1030,133.26 C1030,155.95 1030,179.72 1030,196.62 " fill="none" id="C_0000000473&lt;-C_0000000477" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1030,133.26 C1030,155.95 1030,179.72 1030,196.62 " fill="none" id="C_0000559263385732885469&lt;-C_0000299466181098300963" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="1030,120.08,1026,126.08,1030,132.08,1034,126.08,1030,120.08" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="1033" y="156.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="1043" y="163.0669">a2</text>
<path d="M1093.21,129.46 C1116.56,153.27 1141.57,178.77 1159.08,196.62 " fill="none" id="C_0000000473&lt;-C_0000000480" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1093.21,129.46 C1116.56,153.27 1141.57,178.77 1159.08,196.62 " fill="none" id="C_0000559263385732885469&lt;-C_0000489063277971613593" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="1084.02,120.08,1085.3627,127.165,1092.4191,128.6506,1091.0764,121.5656,1084.02,120.08" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="1132" y="156.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="1142" y="163.0669">b1</text>
<path d="M1136.98,126.64 C1179.82,151.33 1226.56,178.26 1258.78,196.83 " fill="none" id="C_0000000473&lt;-C_0000000483" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1136.98,126.64 C1179.82,151.33 1226.56,178.26 1258.78,196.83 " fill="none" id="C_0000559263385732885469&lt;-C_0000014232362483200599" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="1125.6,120.08,1128.8056,126.5394,1136.001,126.0649,1132.7955,119.6054,1125.6,120.08" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="1207" y="156.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="1217" y="163.0669">b2</text>
<path d="M770.25,116.82 C634.09,143.98 474.14,175.89 368.56,196.95 " fill="none" id="C_0000000473&lt;-C_0000000486" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M770.25,116.82 C634.09,143.98 474.14,175.89 368.56,196.95 " fill="none" id="C_0000559263385732885469&lt;-C_0001478239414632239754" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="783.35,114.2,776.6838,111.4501,771.5815,116.5458,778.2477,119.2957,783.35,114.2" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="598" y="156.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="15" x="608" y="163.0669">c1</text>

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -0,0 +1,396 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" aria-roledescription="classDiagram" role="graphics-document document" viewBox="0 0 1342.828125 459" style="max-width: 1342.83px; background-color: white;" width="1342.828125" id="my-svg">
<style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#my-svg g.classGroup text .title{font-weight:bolder;}#my-svg .nodeLabel,#my-svg .edgeLabel{color:#131300;}#my-svg .edgeLabel .label rect{fill:#ECECFF;}#my-svg .label text{fill:#131300;}#my-svg .edgeLabel .label span{background:#ECECFF;}#my-svg .classTitle{font-weight:bolder;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .divider{stroke:#9370DB;stroke-width:1;}#my-svg g.clickable{cursor:pointer;}#my-svg g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#my-svg g.classGroup line{stroke:#9370DB;stroke-width:1;}#my-svg .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#my-svg .classLabel .label{fill:#9370DB;font-size:10px;}#my-svg .relation{stroke:#333333;stroke-width:1;fill:none;}#my-svg .dashed-line{stroke-dasharray:3;}#my-svg .dotted-line{stroke-dasharray:1 2;}#my-svg #compositionStart,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #compositionEnd,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionStart,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionEnd,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationStart,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationEnd,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopStart,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopEnd,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg .edgeTerminals{font-size:11px;}#my-svg .classTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style>
<g>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker aggregation classDiagram" id="classDiagram-aggregationStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker aggregation classDiagram" id="classDiagram-aggregationEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker extension classDiagram" id="classDiagram-extensionStart">
<path d="M 1,7 L18,13 V 1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker extension classDiagram" id="classDiagram-extensionEnd">
<path d="M 1,1 V 13 L18,7 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker composition classDiagram" id="classDiagram-compositionStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker composition classDiagram" id="classDiagram-compositionEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker dependency classDiagram" id="classDiagram-dependencyStart">
<path d="M 5,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker dependency classDiagram" id="classDiagram-dependencyEnd">
<path d="M 18,7 L9,13 L14,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker lollipop classDiagram" id="classDiagram-lollipopStart">
<circle r="6" cy="7" cx="6" fill="white" stroke="black"/>
</marker>
</defs>
<g class="root">
<g class="clusters"/>
<g class="edgePaths">
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id1" d="M101.28125,300L101.28125,304.1666666666667C101.28125,308.3333333333333,101.28125,316.6666666666667,107.8086972268212,325C114.33614445364238,333.3333333333333,127.39103890728477,341.6666666666667,133.91848613410596,345.8333333333333L140.44593336092714,350"/>
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id2" d="M337.8359375,300L337.8359375,304.1666666666667C337.8359375,308.3333333333333,337.8359375,316.6666666666667,331.30849027317885,325C324.78104304635764,333.3333333333333,311.7261485927152,341.6666666666667,305.19870136589407,345.8333333333333L298.67125413907286,350"/>
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id3" d="M521.5234375,300L521.5234375,304.1666666666667C521.5234375,308.3333333333333,521.5234375,316.6666666666667,526.9870136589403,326.8333333333333C532.4505898178808,337,543.3777421357617,349,548.841318294702,355L554.3048944536424,361"/>
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id4" d="M659.0234375,300L659.0234375,304.1666666666667C659.0234375,308.3333333333333,659.0234375,316.6666666666667,653.5598613410597,326.8333333333333C648.0962851821192,337,637.1691328642383,349,631.705556705298,355L626.2419805463576,361"/>
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id5" d="M1045.46875,300L1045.46875,304.1666666666667C1045.46875,308.3333333333333,1045.46875,316.6666666666667,1045.46875,326.8333333333333C1045.46875,337,1045.46875,349,1045.46875,355L1045.46875,361"/>
<path marker-start="url(#classDiagram-aggregationStart)" style="fill:none" class="edge-pattern-solid relation" id="id6" d="M236.9921875,171.05513004034134L214.37369791666666,177.37927503361777C191.75520833333334,183.70342002689424,146.51822916666666,196.3517100134471,123.89973958333333,208.34252167339022C101.28125,220.33333333333334,101.28125,231.66666666666666,101.28125,237.33333333333334L101.28125,243"/>
<path marker-start="url(#classDiagram-aggregationStart)" style="fill:none" class="edge-pattern-solid relation" id="id7" d="M390.9880651595745,175L382.1293772163121,180.66666666666666C373.27068927304964,186.33333333333334,355.55331338652485,197.66666666666666,346.6946254432624,209C337.8359375,220.33333333333334,337.8359375,231.66666666666666,337.8359375,237.33333333333334L337.8359375,243"/>
<path marker-start="url(#classDiagram-aggregationStart)" style="fill:none" class="edge-pattern-solid relation" id="id8" d="M521.5234375,175L521.5234375,180.66666666666666C521.5234375,186.33333333333334,521.5234375,197.66666666666666,521.5234375,209C521.5234375,220.33333333333334,521.5234375,231.66666666666666,521.5234375,237.33333333333334L521.5234375,243"/>
<path marker-start="url(#classDiagram-aggregationStart)" style="fill:none" class="edge-pattern-solid relation" id="id9" d="M619.2362034574468,175L625.8674091312056,180.66666666666666C632.4986148049645,186.33333333333334,645.7610261524823,197.66666666666666,652.3922318262411,209C659.0234375,220.33333333333334,659.0234375,231.66666666666666,659.0234375,237.33333333333334L659.0234375,243"/>
<path marker-start="url(#classDiagram-aggregationStart)" style="fill:none" class="edge-pattern-solid relation" id="id10" d="M806.0546875,155.30899127711922L845.95703125,164.25749273093268C885.859375,173.20599418474615,965.6640625,191.1029970923731,1005.56640625,205.71816521285322C1045.46875,220.33333333333334,1045.46875,231.66666666666666,1045.46875,237.33333333333334L1045.46875,243"/>
</g>
<g class="edgeLabels">
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(101.28125, 209)" class="edgeLabel">
<g transform="translate(-11.5625, -9)" class="label">
<foreignObject height="18" width="23.125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-a1</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(337.8359375, 209)" class="edgeLabel">
<g transform="translate(-11.5625, -9)" class="label">
<foreignObject height="18" width="23.125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-a2</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(521.5234375, 209)" class="edgeLabel">
<g transform="translate(-11.5625, -9)" class="label">
<foreignObject height="18" width="23.125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-b1</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(659.0234375, 209)" class="edgeLabel">
<g transform="translate(-11.5625, -9)" class="label">
<foreignObject height="18" width="23.125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-b2</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(1045.46875, 209)" class="edgeLabel">
<g transform="translate(-11.1171875, -9)" class="label">
<foreignObject height="18" width="22.234375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-c1</span>
</span>
</div>
</foreignObject>
</g>
</g>
</g>
<g class="nodes">
<a transform="translate(219.55859375, 400.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L11">
<g title="A" id="classId-C_0001773299890023132282-0" class="node default clickable">
<rect height="101" width="206.203125" y="-50.5" x="-103.1015625" class="outer title-state"/>
<line y2="-20.5" y1="-20.5" x2="103.1015625" x1="-103.1015625" class="divider"/>
<line y2="39.5" y1="39.5" x2="103.1015625" x1="-103.1015625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -36.7578125, -43)" height="18" width="73.515625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A&lt;T,Ts...&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -95.6015625, -9)" height="18" width="66.40625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-value : T</span>
</div>
</foreignObject>
<foreignObject transform="translate( -95.6015625, 13)" height="18" width="191.203125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-values : std::variant&lt;Ts...&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(590.2734375, 400.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L16">
<g title="B" id="classId-C_0002061171077567279746-1" class="node default clickable">
<rect height="79" width="243.515625" y="-39.5" x="-121.7578125" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="121.7578125" x1="-121.7578125" class="divider"/>
<line y2="28.5" y1="28.5" x2="121.7578125" x1="-121.7578125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -40.4609375, -32)" height="18" width="80.921875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">B&lt;int... Is&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -114.2578125, 2)" height="18" width="228.515625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-ints : std::array&lt;int,sizeof...(Is)&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(1045.46875, 400.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L20">
<g title="C" id="classId-C_0000627809578407650629-2" class="node default clickable">
<rect height="79" width="234.625" y="-39.5" x="-117.3125" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="117.3125" x1="-117.3125" class="divider"/>
<line y2="28.5" y1="28.5" x2="117.3125" x1="-117.3125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -46.6796875, -32)" height="18" width="93.359375" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">C&lt;T,int... Is&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -109.8125, 2)" height="18" width="219.625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-ints : std::array&lt;T,sizeof...(Is)&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(101.28125, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L11">
<g title="A" id="classId-C_0000286972398942005457-3" class="node default clickable">
<rect height="57" width="186.5625" y="-28.5" x="-93.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="93.28125" x1="-93.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="93.28125" x1="-93.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -85.78125, -21)" height="18" width="171.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A&lt;int,std::string,float&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(337.8359375, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L11">
<g title="A" id="classId-C_0000299466181098300963-4" class="node default clickable">
<rect height="57" width="186.546875" y="-28.5" x="-93.2734375" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="93.2734375" x1="-93.2734375" class="divider"/>
<line y2="17.5" y1="17.5" x2="93.2734375" x1="-93.2734375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -85.7734375, -21)" height="18" width="171.546875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A&lt;int,std::string,bool&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(521.5234375, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L16">
<g title="B" id="classId-C_0000489063277971613593-5" class="node default clickable">
<rect height="57" width="80.828125" y="-28.5" x="-40.4140625" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="40.4140625" x1="-40.4140625" class="divider"/>
<line y2="17.5" y1="17.5" x2="40.4140625" x1="-40.4140625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -32.9140625, -21)" height="18" width="65.828125" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">B&lt;3,2,1&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(659.0234375, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L16">
<g title="B" id="classId-C_0000014232362483200599-6" class="node default clickable">
<rect height="57" width="94.171875" y="-28.5" x="-47.0859375" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="47.0859375" x1="-47.0859375" class="divider"/>
<line y2="17.5" y1="17.5" x2="47.0859375" x1="-47.0859375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -39.5859375, -21)" height="18" width="79.171875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">B&lt;1,1,1,1&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(1045.46875, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L20">
<g title="C" id="classId-C_0001478239414632239754-7" class="node default clickable">
<rect height="57" width="578.71875" y="-28.5" x="-289.359375" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="289.359375" x1="-289.359375" class="divider"/>
<line y2="17.5" y1="17.5" x2="289.359375" x1="-289.359375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -281.859375, -21)" height="18" width="563.71875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">C&lt;std::map&lt;int,std::vector&lt;std::vector&lt;std::vector&lt;std::string&gt;&gt;&gt;&gt;,3,3,3&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(521.5234375, 91.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00012/t00012.cc#L24">
<g title="R" id="classId-C_0000559263385732885469-8" class="node default clickable">
<rect height="167" width="569.0625" y="-83.5" x="-284.53125" class="outer title-state"/>
<line y2="-53.5" y1="-53.5" x2="284.53125" x1="-284.53125" class="divider"/>
<line y2="72.5" y1="72.5" x2="284.53125" x1="-284.53125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -76)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">R</span>
</div>
</foreignObject>
<foreignObject transform="translate( -277.03125, -42)" height="18" width="190.328125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-a1 : A&lt;int,std::string,float&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -277.03125, -20)" height="18" width="190.34375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-a2 : A&lt;int,std::string,bool&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -277.03125, 2)" height="18" width="101.40625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-b1 : B&lt;3,2,1&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -277.03125, 24)" height="18" width="114.75">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-b2 : B&lt;1,1,1,1&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -277.03125, 46)" height="18" width="554.0625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-c1 : C&lt;std::map&lt;int,std::vector&lt;std::vector&lt;std::vector&lt;std::string&gt;&gt;&gt;&gt;,3,3,3&gt;</span>
</div>
</foreignObject>
</g>
</g>
</a>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 28 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 51 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 40 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 73 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 62 KiB

View File

@@ -2,7 +2,7 @@
## Config
```yaml
compilation_database_dir: ..
output_directory: puml
output_directory: diagrams
diagrams:
t00015_class:
type: class
@@ -23,34 +23,197 @@ namespace t00015 {
namespace ns1 {
inline namespace ns2_v1_0_0 {
class A {
};
class A { };
}
namespace ns2_v0_9_0 {
class [[deprecated]] A {
};
class [[deprecated]] A { };
}
namespace {
class Anon final : public A {
};
}
class Anon final : public A { };
}
} // namespace ns1
namespace ns3 {
namespace ns1::ns2 {
class Anon : public t00015::ns1::A {
};
class Anon : public t00015::ns1::A { };
}
class B : public ns1::ns2::Anon {
};
}
}
class B : public ns1::ns2::Anon { };
}
} // namespace t00015
} // namespace clanguml
```
## Generated UML diagrams
## Generated PlantUML diagrams
![t00015_class](./t00015_class.svg "Namespace fun")
## Generated Mermaid diagrams
![t00015_class](./t00015_class_mermaid.svg "Namespace fun")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00015::ns1::A",
"id": "1410694888805149453",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "A",
"namespace": "clanguml::t00015::ns1",
"source_location": {
"column": 7,
"file": "../../tests/t00015/t00015.cc",
"line": 6,
"translation_unit": "../../tests/t00015/t00015.cc"
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00015::ns1::ns2_v0_9_0::A",
"id": "485552648049088863",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "A",
"namespace": "clanguml::t00015::ns1::ns2_v0_9_0",
"source_location": {
"column": 22,
"file": "../../tests/t00015/t00015.cc",
"line": 10,
"translation_unit": "../../tests/t00015/t00015.cc"
},
"template_parameters": [],
"type": "class"
},
{
"bases": [
{
"access": "public",
"id": "1410694888805149453",
"is_virtual": false,
"name": "clanguml::t00015::ns1::A"
}
],
"display_name": "clanguml::t00015::ns1::Anon",
"id": "1060731132374575329",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "Anon",
"namespace": "clanguml::t00015::ns1",
"source_location": {
"column": 7,
"file": "../../tests/t00015/t00015.cc",
"line": 14,
"translation_unit": "../../tests/t00015/t00015.cc"
},
"template_parameters": [],
"type": "class"
},
{
"bases": [
{
"access": "public",
"id": "1410694888805149453",
"is_virtual": false,
"name": "clanguml::t00015::ns1::A"
}
],
"display_name": "clanguml::t00015::ns3::ns1::ns2::Anon",
"id": "1797521288354158629",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "Anon",
"namespace": "clanguml::t00015::ns3::ns1::ns2",
"source_location": {
"column": 7,
"file": "../../tests/t00015/t00015.cc",
"line": 21,
"translation_unit": "../../tests/t00015/t00015.cc"
},
"template_parameters": [],
"type": "class"
},
{
"bases": [
{
"access": "public",
"id": "1797521288354158629",
"is_virtual": false,
"name": "clanguml::t00015::ns3::ns1::ns2::Anon"
}
],
"display_name": "clanguml::t00015::ns3::B",
"id": "870882387819356092",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "B",
"namespace": "clanguml::t00015::ns3",
"source_location": {
"column": 7,
"file": "../../tests/t00015/t00015.cc",
"line": 24,
"translation_unit": "../../tests/t00015/t00015.cc"
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.4.0-32-g701b2c5",
"llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)",
"schema_version": 1
},
"name": "t00015_class",
"relationships": [
{
"access": "public",
"destination": "1410694888805149453",
"source": "1060731132374575329",
"type": "extension"
},
{
"access": "public",
"destination": "1410694888805149453",
"source": "1797521288354158629",
"type": "extension"
},
{
"access": "public",
"destination": "1797521288354158629",
"source": "870882387819356092",
"type": "extension"
}
],
"using_namespace": "clanguml::t00015"
}
```

View File

@@ -1,6 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="283px" preserveAspectRatio="none" style="width:365px;height:283px;" version="1.1" viewBox="0 0 365 283" width="365px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1kn2t11m3gf6b" width="300%" x="-1" y="-1">
<filter height="300%" id="f1xjgbnbs5flmt" width="300%" x="-1" y="-1">
<feGaussianBlur result="blurOut" stdDeviation="2.0"/>
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
@@ -9,51 +9,51 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00015/t00015.cc#L6" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00015/t00015.cc#L6" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1kn2t11m3gf6b)" height="48" id="C_0000000825" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="98" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00015/t00015.cc#L6" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00015/t00015.cc#L6" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xjgbnbs5flmt)" height="48" id="C_0001410694888805149453" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="98" y="8"/>
<ellipse cx="113" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M115.9688,29.6406 Q115.3906,29.9375 114.75,30.0781 Q114.1094,30.2344 113.4063,30.2344 Q110.9063,30.2344 109.5781,28.5938 Q108.2656,26.9375 108.2656,23.8125 Q108.2656,20.6875 109.5781,19.0313 Q110.9063,17.375 113.4063,17.375 Q114.1094,17.375 114.75,17.5313 Q115.4063,17.6875 115.9688,17.9844 L115.9688,20.7031 Q115.3438,20.125 114.75,19.8594 Q114.1563,19.5781 113.5313,19.5781 Q112.1875,19.5781 111.5,20.6563 Q110.8125,21.7188 110.8125,23.8125 Q110.8125,25.9063 111.5,26.9844 Q112.1875,28.0469 113.5313,28.0469 Q114.1563,28.0469 114.75,27.7813 Q115.3438,27.5 115.9688,26.9219 L115.9688,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="39" x="127" y="28.1543">ns1::A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="99" x2="168" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="99" x2="168" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00015/t00015.cc#L11" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00015/t00015.cc#L11" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1kn2t11m3gf6b)" height="48" id="C_0000000830" style="stroke: #A80036; stroke-width: 1.5;" width="150" x="204.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00015/t00015.cc#L10" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00015/t00015.cc#L10" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xjgbnbs5flmt)" height="48" id="C_0000485552648049088863" style="stroke: #A80036; stroke-width: 1.5;" width="150" x="204.5" y="8"/>
<ellipse cx="219.5" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M222.4688,29.6406 Q221.8906,29.9375 221.25,30.0781 Q220.6094,30.2344 219.9063,30.2344 Q217.4063,30.2344 216.0781,28.5938 Q214.7656,26.9375 214.7656,23.8125 Q214.7656,20.6875 216.0781,19.0313 Q217.4063,17.375 219.9063,17.375 Q220.6094,17.375 221.25,17.5313 Q221.9063,17.6875 222.4688,17.9844 L222.4688,20.7031 Q221.8438,20.125 221.25,19.8594 Q220.6563,19.5781 220.0313,19.5781 Q218.6875,19.5781 218,20.6563 Q217.3125,21.7188 217.3125,23.8125 Q217.3125,25.9063 218,26.9844 Q218.6875,28.0469 220.0313,28.0469 Q220.6563,28.0469 221.25,27.7813 Q221.8438,27.5 222.4688,26.9219 L222.4688,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="233.5" y="28.1543">ns1::ns2_v0_9_0::A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="205.5" x2="353.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="205.5" x2="353.5" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00015/t00015.cc#L16" target="_top" title="Anon" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00015/t00015.cc#L16" xlink:show="new" xlink:title="Anon" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1kn2t11m3gf6b)" height="48" id="C_0000000834" style="stroke: #A80036; stroke-width: 1.5;" width="95" x="6" y="116"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00015/t00015.cc#L14" target="_top" title="Anon" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00015/t00015.cc#L14" xlink:show="new" xlink:title="Anon" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xjgbnbs5flmt)" height="48" id="C_0001060731132374575329" style="stroke: #A80036; stroke-width: 1.5;" width="95" x="6" y="116"/>
<ellipse cx="21" cy="132" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,137.6406 Q23.3906,137.9375 22.75,138.0781 Q22.1094,138.2344 21.4063,138.2344 Q18.9063,138.2344 17.5781,136.5938 Q16.2656,134.9375 16.2656,131.8125 Q16.2656,128.6875 17.5781,127.0313 Q18.9063,125.375 21.4063,125.375 Q22.1094,125.375 22.75,125.5313 Q23.4063,125.6875 23.9688,125.9844 L23.9688,128.7031 Q23.3438,128.125 22.75,127.8594 Q22.1563,127.5781 21.5313,127.5781 Q20.1875,127.5781 19.5,128.6563 Q18.8125,129.7188 18.8125,131.8125 Q18.8125,133.9063 19.5,134.9844 Q20.1875,136.0469 21.5313,136.0469 Q22.1563,136.0469 22.75,135.7813 Q23.3438,135.5 23.9688,134.9219 L23.9688,137.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="63" x="35" y="136.1543">ns1::Anon</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="100" y1="148" y2="148"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="100" y1="156" y2="156"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00015/t00015.cc#L24" target="_top" title="Anon" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00015/t00015.cc#L24" xlink:show="new" xlink:title="Anon" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1kn2t11m3gf6b)" height="48" id="C_0000000841" style="stroke: #A80036; stroke-width: 1.5;" width="157" x="136" y="116"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00015/t00015.cc#L21" target="_top" title="Anon" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00015/t00015.cc#L21" xlink:show="new" xlink:title="Anon" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xjgbnbs5flmt)" height="48" id="C_0001797521288354158629" style="stroke: #A80036; stroke-width: 1.5;" width="157" x="136" y="116"/>
<ellipse cx="151" cy="132" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M153.9688,137.6406 Q153.3906,137.9375 152.75,138.0781 Q152.1094,138.2344 151.4063,138.2344 Q148.9063,138.2344 147.5781,136.5938 Q146.2656,134.9375 146.2656,131.8125 Q146.2656,128.6875 147.5781,127.0313 Q148.9063,125.375 151.4063,125.375 Q152.1094,125.375 152.75,125.5313 Q153.4063,125.6875 153.9688,125.9844 L153.9688,128.7031 Q153.3438,128.125 152.75,127.8594 Q152.1563,127.5781 151.5313,127.5781 Q150.1875,127.5781 149.5,128.6563 Q148.8125,129.7188 148.8125,131.8125 Q148.8125,133.9063 149.5,134.9844 Q150.1875,136.0469 151.5313,136.0469 Q152.1563,136.0469 152.75,135.7813 Q153.3438,135.5 153.9688,134.9219 L153.9688,137.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="125" x="165" y="136.1543">ns3::ns1::ns2::Anon</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="137" x2="292" y1="148" y2="148"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="137" x2="292" y1="156" y2="156"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00015/t00015.cc#L28" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00015/t00015.cc#L28" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1kn2t11m3gf6b)" height="48" id="C_0000000845" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="179" y="224"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00015/t00015.cc#L24" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00015/t00015.cc#L24" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xjgbnbs5flmt)" height="48" id="C_0000870882387819356092" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="179" y="224"/>
<ellipse cx="194" cy="240" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M196.9688,245.6406 Q196.3906,245.9375 195.75,246.0781 Q195.1094,246.2344 194.4063,246.2344 Q191.9063,246.2344 190.5781,244.5938 Q189.2656,242.9375 189.2656,239.8125 Q189.2656,236.6875 190.5781,235.0313 Q191.9063,233.375 194.4063,233.375 Q195.1094,233.375 195.75,233.5313 Q196.4063,233.6875 196.9688,233.9844 L196.9688,236.7031 Q196.3438,236.125 195.75,235.8594 Q195.1563,235.5781 194.5313,235.5781 Q193.1875,235.5781 192.5,236.6563 Q191.8125,237.7188 191.8125,239.8125 Q191.8125,241.9063 192.5,242.9844 Q193.1875,244.0469 194.5313,244.0469 Q195.1563,244.0469 195.75,243.7813 Q196.3438,243.5 196.9688,242.9219 L196.9688,245.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="39" x="208" y="244.1543">ns3::B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="180" x2="249" y1="256" y2="256"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="180" x2="249" y1="264" y2="264"/>
</a>
<path d="M103.93,72.18 C92.9,86.8 80.72,102.93 71.1,115.68 " fill="none" id="C_0000000825&lt;-C_0000000834" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M103.93,72.18 C92.9,86.8 80.72,102.93 71.1,115.68 " fill="none" id="C_0001410694888805149453&lt;-C_0001060731132374575329" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="98.51,67.75,116.14,56,109.68,76.18,98.51,67.75" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M163.44,72.18 C174.61,86.8 186.94,102.93 196.68,115.68 " fill="none" id="C_0000000825&lt;-C_0000000841" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M163.44,72.18 C174.61,86.8 186.94,102.93 196.68,115.68 " fill="none" id="C_0001410694888805149453&lt;-C_0001797521288354158629" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="157.66,76.14,151.08,56,168.78,67.64,157.66,76.14" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M214.5,184.02 C214.5,197.58 214.5,212.04 214.5,223.68 " fill="none" id="C_0000000841&lt;-C_0000000845" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M214.5,184.02 C214.5,197.58 214.5,212.04 214.5,223.68 " fill="none" id="C_0001797521288354158629&lt;-C_0000870882387819356092" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="207.5,184,214.5,164,221.5,184,207.5,184" style="stroke: #A80036; stroke-width: 1.0;"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@@ -0,0 +1,185 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" aria-roledescription="classDiagram" role="graphics-document document" viewBox="0 0 401.91015625 287" style="max-width: 401.91px; background-color: white;" width="401.91015625" id="my-svg">
<style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#my-svg g.classGroup text .title{font-weight:bolder;}#my-svg .nodeLabel,#my-svg .edgeLabel{color:#131300;}#my-svg .edgeLabel .label rect{fill:#ECECFF;}#my-svg .label text{fill:#131300;}#my-svg .edgeLabel .label span{background:#ECECFF;}#my-svg .classTitle{font-weight:bolder;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .divider{stroke:#9370DB;stroke-width:1;}#my-svg g.clickable{cursor:pointer;}#my-svg g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#my-svg g.classGroup line{stroke:#9370DB;stroke-width:1;}#my-svg .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#my-svg .classLabel .label{fill:#9370DB;font-size:10px;}#my-svg .relation{stroke:#333333;stroke-width:1;fill:none;}#my-svg .dashed-line{stroke-dasharray:3;}#my-svg .dotted-line{stroke-dasharray:1 2;}#my-svg #compositionStart,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #compositionEnd,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionStart,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionEnd,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationStart,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationEnd,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopStart,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopEnd,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg .edgeTerminals{font-size:11px;}#my-svg .classTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style>
<g>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker aggregation classDiagram" id="classDiagram-aggregationStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker aggregation classDiagram" id="classDiagram-aggregationEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker extension classDiagram" id="classDiagram-extensionStart">
<path d="M 1,7 L18,13 V 1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker extension classDiagram" id="classDiagram-extensionEnd">
<path d="M 1,1 V 13 L18,7 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker composition classDiagram" id="classDiagram-compositionStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker composition classDiagram" id="classDiagram-compositionEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker dependency classDiagram" id="classDiagram-dependencyStart">
<path d="M 5,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker dependency classDiagram" id="classDiagram-dependencyEnd">
<path d="M 18,7 L9,13 L14,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker lollipop classDiagram" id="classDiagram-lollipopStart">
<circle r="6" cy="7" cx="6" fill="white" stroke="black"/>
</marker>
</defs>
<g class="root">
<g class="clusters"/>
<g class="edgePaths">
<path marker-start="url(#classDiagram-extensionStart)" style="fill:none" class="edge-pattern-solid relation" id="id1" d="M113.83203125,55.50775525943699L104.03580729166667,61.25646271619749C94.23958333333333,67.00517017295799,74.64713541666667,78.50258508647899,64.85091145833333,88.41795920990616C55.0546875,98.33333333333333,55.0546875,106.66666666666667,55.0546875,110.83333333333333L55.0546875,115"/>
<path marker-start="url(#classDiagram-extensionStart)" style="fill:none" class="edge-pattern-solid relation" id="id2" d="M178.61328125,55.50775525943699L188.40950520833334,61.25646271619749C198.20572916666666,67.00517017295799,217.79817708333334,78.50258508647899,227.59440104166666,88.41795920990616C237.390625,98.33333333333333,237.390625,106.66666666666667,237.390625,110.83333333333333L237.390625,115"/>
<path marker-start="url(#classDiagram-extensionStart)" style="fill:none" class="edge-pattern-solid relation" id="id3" d="M237.390625,172L237.390625,176.16666666666666C237.390625,180.33333333333334,237.390625,188.66666666666666,237.390625,197C237.390625,205.33333333333334,237.390625,213.66666666666666,237.390625,217.83333333333334L237.390625,222"/>
</g>
<g class="edgeLabels">
<g class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel"/>
</div>
</foreignObject>
</g>
</g>
<g class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel"/>
</div>
</foreignObject>
</g>
</g>
<g class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel"/>
</div>
</foreignObject>
</g>
</g>
</g>
<g class="nodes">
<a transform="translate(146.22265625, 36.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00015/t00015.cc#L6">
<g title="A" id="classId-C_0001410694888805149453-0" class="node default clickable">
<rect height="57" width="64.78125" y="-28.5" x="-32.390625" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="32.390625" x1="-32.390625" class="divider"/>
<line y2="17.5" y1="17.5" x2="32.390625" x1="-32.390625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -24.890625, -21)" height="18" width="49.78125" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">ns1::A</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(311.26171875, 36.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00015/t00015.cc#L10">
<g title="A" id="classId-C_0000485552648049088863-1" class="node default clickable">
<rect height="57" width="165.296875" y="-28.5" x="-82.6484375" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="82.6484375" x1="-82.6484375" class="divider"/>
<line y2="17.5" y1="17.5" x2="82.6484375" x1="-82.6484375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -75.1484375, -21)" height="18" width="150.296875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">ns1::ns2_v0_9_0::A</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(55.0546875, 143.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00015/t00015.cc#L14">
<g title="Anon" id="classId-C_0001060731132374575329-2" class="node default clickable">
<rect height="57" width="94.109375" y="-28.5" x="-47.0546875" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="47.0546875" x1="-47.0546875" class="divider"/>
<line y2="17.5" y1="17.5" x2="47.0546875" x1="-47.0546875" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -39.5546875, -21)" height="18" width="79.109375" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">ns1::Anon</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(237.390625, 143.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00015/t00015.cc#L21">
<g title="Anon" id="classId-C_0001797521288354158629-3" class="node default clickable">
<rect height="57" width="170.5625" y="-28.5" x="-85.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="85.28125" x1="-85.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="85.28125" x1="-85.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -77.78125, -21)" height="18" width="155.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">ns3::ns1::ns2::Anon</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(237.390625, 250.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00015/t00015.cc#L24">
<g title="B" id="classId-C_0000870882387819356092-4" class="node default clickable">
<rect height="57" width="64.78125" y="-28.5" x="-32.390625" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="32.390625" x1="-32.390625" class="divider"/>
<line y2="17.5" y1="17.5" x2="32.390625" x1="-32.390625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -24.890625, -21)" height="18" width="49.78125" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">ns3::B</span>
</div>
</foreignObject>
</g>
</g>
</a>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -2,7 +2,7 @@
## Config
```yaml
compilation_database_dir: ..
output_directory: puml
output_directory: diagrams
diagrams:
t00016_class:
type: class
@@ -25,11 +25,15 @@ template <typename> struct is_numeric {
enum { value = false };
};
template <> struct is_numeric<float> {
enum { value = true };
};
template <> struct is_numeric<char> {
enum { value = true };
};
template <> struct is_numeric<unsigned char> {
template <> struct is_numeric<unsigned int> {
enum { value = true };
};
@@ -40,9 +44,274 @@ template <> struct is_numeric<int> {
template <> struct is_numeric<bool> {
enum { value = false };
};
}
}
} // namespace t00016
} // namespace clanguml
```
## Generated UML diagrams
## Generated PlantUML diagrams
![t00016_class](./t00016_class.svg "Unnamed enums and empty templates")
## Generated Mermaid diagrams
![t00016_class](./t00016_class_mermaid.svg "Unnamed enums and empty templates")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00016::is_numeric<typename>",
"id": "932856332558460389",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": true,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "value",
"type": "enum"
}
],
"methods": [],
"name": "is_numeric",
"namespace": "clanguml::t00016",
"source_location": {
"column": 28,
"file": "../../tests/t00016/t00016.cc",
"line": 4,
"translation_unit": "../../tests/t00016/t00016.cc"
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "typename",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00016::is_numeric<float>",
"id": "95618295648274199",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": true,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "value",
"type": "enum"
}
],
"methods": [],
"name": "is_numeric",
"namespace": "clanguml::t00016",
"source_location": {
"column": 20,
"file": "../../tests/t00016/t00016.cc",
"line": 8,
"translation_unit": "../../tests/t00016/t00016.cc"
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "float"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00016::is_numeric<char>",
"id": "979129381790761728",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": true,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "value",
"type": "enum"
}
],
"methods": [],
"name": "is_numeric",
"namespace": "clanguml::t00016",
"source_location": {
"column": 20,
"file": "../../tests/t00016/t00016.cc",
"line": 12,
"translation_unit": "../../tests/t00016/t00016.cc"
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "char"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00016::is_numeric<unsigned int>",
"id": "2090787690027341836",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": true,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "value",
"type": "enum"
}
],
"methods": [],
"name": "is_numeric",
"namespace": "clanguml::t00016",
"source_location": {
"column": 20,
"file": "../../tests/t00016/t00016.cc",
"line": 16,
"translation_unit": "../../tests/t00016/t00016.cc"
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "unsigned int"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00016::is_numeric<int>",
"id": "500603075237446075",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": true,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "value",
"type": "enum"
}
],
"methods": [],
"name": "is_numeric",
"namespace": "clanguml::t00016",
"source_location": {
"column": 20,
"file": "../../tests/t00016/t00016.cc",
"line": 20,
"translation_unit": "../../tests/t00016/t00016.cc"
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "int"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00016::is_numeric<bool>",
"id": "2111316837513419920",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": true,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "value",
"type": "enum"
}
],
"methods": [],
"name": "is_numeric",
"namespace": "clanguml::t00016",
"source_location": {
"column": 20,
"file": "../../tests/t00016/t00016.cc",
"line": 24,
"translation_unit": "../../tests/t00016/t00016.cc"
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "bool"
}
],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.4.0-32-g701b2c5",
"llvm_version": "Ubuntu clang version 16.0.6 (++20230710042027+7cbf1a259152-1~exp1~20230710162048.105)",
"schema_version": 1
},
"name": "t00016_class",
"relationships": [
{
"access": "public",
"destination": "932856332558460389",
"source": "95618295648274199",
"type": "instantiation"
},
{
"access": "public",
"destination": "932856332558460389",
"source": "979129381790761728",
"type": "instantiation"
},
{
"access": "public",
"destination": "932856332558460389",
"source": "2090787690027341836",
"type": "instantiation"
},
{
"access": "public",
"destination": "932856332558460389",
"source": "500603075237446075",
"type": "instantiation"
},
{
"access": "public",
"destination": "932856332558460389",
"source": "2111316837513419920",
"type": "instantiation"
}
],
"using_namespace": "clanguml::t00016"
}
```

View File

@@ -1,6 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="200px" preserveAspectRatio="none" style="width:694px;height:200px;" version="1.1" viewBox="0 0 694 200" width="694px" zoomAndPan="magnify">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="200px" preserveAspectRatio="none" style="width:847px;height:200px;" version="1.1" viewBox="0 0 847 200" width="847px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1t4xd7sc2wu2r" width="300%" x="-1" y="-1">
<filter height="300%" id="foqzld0do04zx" width="300%" x="-1" y="-1">
<feGaussianBlur result="blurOut" stdDeviation="2.0"/>
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
@@ -9,71 +9,87 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00016/t00016.cc#L4" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00016/t00016.cc#L4" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1t4xd7sc2wu2r)" height="60.8047" id="C_0000000852" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="303" y="129"/>
<ellipse cx="318" cy="145" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M320.9688,150.6406 Q320.3906,150.9375 319.75,151.0781 Q319.1094,151.2344 318.4063,151.2344 Q315.9063,151.2344 314.5781,149.5938 Q313.2656,147.9375 313.2656,144.8125 Q313.2656,141.6875 314.5781,140.0313 Q315.9063,138.375 318.4063,138.375 Q319.1094,138.375 319.75,138.5313 Q320.4063,138.6875 320.9688,138.9844 L320.9688,141.7031 Q320.3438,141.125 319.75,140.8594 Q319.1563,140.5781 318.5313,140.5781 Q317.1875,140.5781 316.5,141.6563 Q315.8125,142.7188 315.8125,144.8125 Q315.8125,146.9063 316.5,147.9844 Q317.1875,149.0469 318.5313,149.0469 Q319.1563,149.0469 319.75,148.7813 Q320.3438,148.5 320.9688,147.9219 L320.9688,150.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="86" x="332" y="149.1543">is_numeric&lt;&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="304" x2="420" y1="161" y2="161"/>
<ellipse cx="314" cy="172" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="323" y="175.2104">value : enum</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="304" x2="420" y1="181.8047" y2="181.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L4" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L4" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#foqzld0do04zx)" height="60.8047" id="C_0000932856332558460389" style="stroke: #A80036; stroke-width: 1.5;" width="165" x="343.5" y="129"/>
<ellipse cx="358.5" cy="145" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M361.4688,150.6406 Q360.8906,150.9375 360.25,151.0781 Q359.6094,151.2344 358.9063,151.2344 Q356.4063,151.2344 355.0781,149.5938 Q353.7656,147.9375 353.7656,144.8125 Q353.7656,141.6875 355.0781,140.0313 Q356.4063,138.375 358.9063,138.375 Q359.6094,138.375 360.25,138.5313 Q360.9063,138.6875 361.4688,138.9844 L361.4688,141.7031 Q360.8438,141.125 360.25,140.8594 Q359.6563,140.5781 359.0313,140.5781 Q357.6875,140.5781 357,141.6563 Q356.3125,142.7188 356.3125,144.8125 Q356.3125,146.9063 357,147.9844 Q357.6875,149.0469 359.0313,149.0469 Q359.6563,149.0469 360.25,148.7813 Q360.8438,148.5 361.4688,147.9219 L361.4688,150.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="372.5" y="149.1543">is_numeric</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="65" x="446.5" y="126"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="63" x="447.5" y="138.1387">typename</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="344.5" x2="507.5" y1="161" y2="161"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="344.5" x2="507.5" y1="169" y2="169"/>
<ellipse cx="354.5" cy="180" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="363.5" y="183.2104">value : enum</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00016/t00016.cc#L8" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00016/t00016.cc#L8" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1t4xd7sc2wu2r)" height="60.8047" id="C_0000000857" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="6" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L8" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L8" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#foqzld0do04zx)" height="60.8047" id="C_0000095618295648274199" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="6" y="8"/>
<ellipse cx="21" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,29.6406 Q23.3906,29.9375 22.75,30.0781 Q22.1094,30.2344 21.4063,30.2344 Q18.9063,30.2344 17.5781,28.5938 Q16.2656,26.9375 16.2656,23.8125 Q16.2656,20.6875 17.5781,19.0313 Q18.9063,17.375 21.4063,17.375 Q22.1094,17.375 22.75,17.5313 Q23.4063,17.6875 23.9688,17.9844 L23.9688,20.7031 Q23.3438,20.125 22.75,19.8594 Q22.1563,19.5781 21.5313,19.5781 Q20.1875,19.5781 19.5,20.6563 Q18.8125,21.7188 18.8125,23.8125 Q18.8125,25.9063 19.5,26.9844 Q20.1875,28.0469 21.5313,28.0469 Q22.1563,28.0469 22.75,27.7813 Q23.3438,27.5 23.9688,26.9219 L23.9688,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="35" y="28.1543">is_numeric</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="30" x="109" y="5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="28" x="110" y="17.1387">char</text>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="28" x="110" y="17.1387">float</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="135" y1="40" y2="40"/>
<ellipse cx="17" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="26" y="54.2104">value : enum</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="135" y1="60.8047" y2="60.8047"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="135" y1="48" y2="48"/>
<ellipse cx="17" cy="59" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="26" y="62.2104">value : enum</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00016/t00016.cc#L12" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00016/t00016.cc#L12" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1t4xd7sc2wu2r)" height="60.8047" id="C_0000000867" style="stroke: #A80036; stroke-width: 1.5;" width="191" x="171.5" y="8"/>
<ellipse cx="186.5" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M189.4688,29.6406 Q188.8906,29.9375 188.25,30.0781 Q187.6094,30.2344 186.9063,30.2344 Q184.4063,30.2344 183.0781,28.5938 Q181.7656,26.9375 181.7656,23.8125 Q181.7656,20.6875 183.0781,19.0313 Q184.4063,17.375 186.9063,17.375 Q187.6094,17.375 188.25,17.5313 Q188.9063,17.6875 189.4688,17.9844 L189.4688,20.7031 Q188.8438,20.125 188.25,19.8594 Q187.6563,19.5781 187.0313,19.5781 Q185.6875,19.5781 185,20.6563 Q184.3125,21.7188 184.3125,23.8125 Q184.3125,25.9063 185,26.9844 Q185.6875,28.0469 187.0313,28.0469 Q187.6563,28.0469 188.25,27.7813 Q188.8438,27.5 189.4688,26.9219 L189.4688,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="200.5" y="28.1543">is_numeric</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="91" x="274.5" y="5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="89" x="275.5" y="17.1387">unsigned char</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="172.5" x2="361.5" y1="40" y2="40"/>
<ellipse cx="182.5" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="191.5" y="54.2104">value : enum</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="172.5" x2="361.5" y1="60.8047" y2="60.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L12" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L12" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#foqzld0do04zx)" height="60.8047" id="C_0000979129381790761728" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="171" y="8"/>
<ellipse cx="186" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M188.9688,29.6406 Q188.3906,29.9375 187.75,30.0781 Q187.1094,30.2344 186.4063,30.2344 Q183.9063,30.2344 182.5781,28.5938 Q181.2656,26.9375 181.2656,23.8125 Q181.2656,20.6875 182.5781,19.0313 Q183.9063,17.375 186.4063,17.375 Q187.1094,17.375 187.75,17.5313 Q188.4063,17.6875 188.9688,17.9844 L188.9688,20.7031 Q188.3438,20.125 187.75,19.8594 Q187.1563,19.5781 186.5313,19.5781 Q185.1875,19.5781 184.5,20.6563 Q183.8125,21.7188 183.8125,23.8125 Q183.8125,25.9063 184.5,26.9844 Q185.1875,28.0469 186.5313,28.0469 Q187.1563,28.0469 187.75,27.7813 Q188.3438,27.5 188.9688,26.9219 L188.9688,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="200" y="28.1543">is_numeric</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="30" x="274" y="5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="28" x="275" y="17.1387">char</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="172" x2="300" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="172" x2="300" y1="48" y2="48"/>
<ellipse cx="182" cy="59" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="191" y="62.2104">value : enum</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00016/t00016.cc#L16" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00016/t00016.cc#L16" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1t4xd7sc2wu2r)" height="60.8047" id="C_0000000877" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="398" y="8"/>
<ellipse cx="413" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M415.9688,29.6406 Q415.3906,29.9375 414.75,30.0781 Q414.1094,30.2344 413.4063,30.2344 Q410.9063,30.2344 409.5781,28.5938 Q408.2656,26.9375 408.2656,23.8125 Q408.2656,20.6875 409.5781,19.0313 Q410.9063,17.375 413.4063,17.375 Q414.1094,17.375 414.75,17.5313 Q415.4063,17.6875 415.9688,17.9844 L415.9688,20.7031 Q415.3438,20.125 414.75,19.8594 Q414.1563,19.5781 413.5313,19.5781 Q412.1875,19.5781 411.5,20.6563 Q410.8125,21.7188 410.8125,23.8125 Q410.8125,25.9063 411.5,26.9844 Q412.1875,28.0469 413.5313,28.0469 Q414.1563,28.0469 414.75,27.7813 Q415.3438,27.5 415.9688,26.9219 L415.9688,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="427" y="28.1543">is_numeric</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="18" x="501" y="5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="16" x="502" y="17.1387">int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="399" x2="515" y1="40" y2="40"/>
<ellipse cx="409" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="418" y="54.2104">value : enum</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="399" x2="515" y1="60.8047" y2="60.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L16" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L16" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#foqzld0do04zx)" height="60.8047" id="C_0002090787690027341836" style="stroke: #A80036; stroke-width: 1.5;" width="179" x="336.5" y="8"/>
<ellipse cx="351.5" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M354.4688,29.6406 Q353.8906,29.9375 353.25,30.0781 Q352.6094,30.2344 351.9063,30.2344 Q349.4063,30.2344 348.0781,28.5938 Q346.7656,26.9375 346.7656,23.8125 Q346.7656,20.6875 348.0781,19.0313 Q349.4063,17.375 351.9063,17.375 Q352.6094,17.375 353.25,17.5313 Q353.9063,17.6875 354.4688,17.9844 L354.4688,20.7031 Q353.8438,20.125 353.25,19.8594 Q352.6563,19.5781 352.0313,19.5781 Q350.6875,19.5781 350,20.6563 Q349.3125,21.7188 349.3125,23.8125 Q349.3125,25.9063 350,26.9844 Q350.6875,28.0469 352.0313,28.0469 Q352.6563,28.0469 353.25,27.7813 Q353.8438,27.5 354.4688,26.9219 L354.4688,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="365.5" y="28.1543">is_numeric</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="79" x="439.5" y="5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="77" x="440.5" y="17.1387">unsigned int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="337.5" x2="514.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="337.5" x2="514.5" y1="48" y2="48"/>
<ellipse cx="347.5" cy="59" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="356.5" y="62.2104">value : enum</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00016/t00016.cc#L20" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00016/t00016.cc#L20" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1t4xd7sc2wu2r)" height="60.8047" id="C_0000000887" style="stroke: #A80036; stroke-width: 1.5;" width="129" x="551.5" y="8"/>
<ellipse cx="566.5" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M569.4688,29.6406 Q568.8906,29.9375 568.25,30.0781 Q567.6094,30.2344 566.9063,30.2344 Q564.4063,30.2344 563.0781,28.5938 Q561.7656,26.9375 561.7656,23.8125 Q561.7656,20.6875 563.0781,19.0313 Q564.4063,17.375 566.9063,17.375 Q567.6094,17.375 568.25,17.5313 Q568.9063,17.6875 569.4688,17.9844 L569.4688,20.7031 Q568.8438,20.125 568.25,19.8594 Q567.6563,19.5781 567.0313,19.5781 Q565.6875,19.5781 565,20.6563 Q564.3125,21.7188 564.3125,23.8125 Q564.3125,25.9063 565,26.9844 Q565.6875,28.0469 567.0313,28.0469 Q567.6563,28.0469 568.25,27.7813 Q568.8438,27.5 569.4688,26.9219 L569.4688,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="580.5" y="28.1543">is_numeric</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="29" x="654.5" y="5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="27" x="655.5" y="17.1387">bool</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="552.5" x2="679.5" y1="40" y2="40"/>
<ellipse cx="562.5" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="571.5" y="54.2104">value : enum</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="552.5" x2="679.5" y1="60.8047" y2="60.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L20" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L20" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#foqzld0do04zx)" height="60.8047" id="C_0000500603075237446075" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="551" y="8"/>
<ellipse cx="566" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M568.9688,29.6406 Q568.3906,29.9375 567.75,30.0781 Q567.1094,30.2344 566.4063,30.2344 Q563.9063,30.2344 562.5781,28.5938 Q561.2656,26.9375 561.2656,23.8125 Q561.2656,20.6875 562.5781,19.0313 Q563.9063,17.375 566.4063,17.375 Q567.1094,17.375 567.75,17.5313 Q568.4063,17.6875 568.9688,17.9844 L568.9688,20.7031 Q568.3438,20.125 567.75,19.8594 Q567.1563,19.5781 566.5313,19.5781 Q565.1875,19.5781 564.5,20.6563 Q563.8125,21.7188 563.8125,23.8125 Q563.8125,25.9063 564.5,26.9844 Q565.1875,28.0469 566.5313,28.0469 Q567.1563,28.0469 567.75,27.7813 Q568.3438,27.5 568.9688,26.9219 L568.9688,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="580" y="28.1543">is_numeric</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="18" x="654" y="5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="16" x="655" y="17.1387">int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="552" x2="668" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="552" x2="668" y1="48" y2="48"/>
<ellipse cx="562" cy="59" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="571" y="62.2104">value : enum</text>
</a>
<path d="M136.31,66.21 C180.1,84.11 237.98,107.79 284.17,126.67 " fill="none" id="C_0000000857-&gt;C_0000000852" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="286.98,120.26,302.85,134.31,281.68,133.22,286.98,120.26" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M290.73,69.22 C301.27,82.43 313.92,98.27 325.61,112.92 " fill="none" id="C_0000000867-&gt;C_0000000852" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="331.24,108.75,338.25,128.74,320.3,117.48,331.24,108.75" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M433.27,69.22 C422.73,82.43 410.08,98.27 398.39,112.92 " fill="none" id="C_0000000877-&gt;C_0000000852" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="403.7,117.48,385.75,128.74,392.76,108.75,403.7,117.48" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M552.89,69.07 C518.61,85.13 475.93,105.13 439.62,122.13 " fill="none" id="C_0000000887-&gt;C_0000000852" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="442.38,128.57,421.3,130.72,436.44,115.9,442.38,128.57" style="stroke: #A80036; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L24" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L24" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#foqzld0do04zx)" height="60.8047" id="C_0002111316837513419920" style="stroke: #A80036; stroke-width: 1.5;" width="129" x="704.5" y="8"/>
<ellipse cx="719.5" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M722.4688,29.6406 Q721.8906,29.9375 721.25,30.0781 Q720.6094,30.2344 719.9063,30.2344 Q717.4063,30.2344 716.0781,28.5938 Q714.7656,26.9375 714.7656,23.8125 Q714.7656,20.6875 716.0781,19.0313 Q717.4063,17.375 719.9063,17.375 Q720.6094,17.375 721.25,17.5313 Q721.9063,17.6875 722.4688,17.9844 L722.4688,20.7031 Q721.8438,20.125 721.25,19.8594 Q720.6563,19.5781 720.0313,19.5781 Q718.6875,19.5781 718,20.6563 Q717.3125,21.7188 717.3125,23.8125 Q717.3125,25.9063 718,26.9844 Q718.6875,28.0469 720.0313,28.0469 Q720.6563,28.0469 721.25,27.7813 Q721.8438,27.5 722.4688,26.9219 L722.4688,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="733.5" y="28.1543">is_numeric</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="29" x="807.5" y="5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="27" x="808.5" y="17.1387">bool</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="705.5" x2="832.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="705.5" x2="832.5" y1="48" y2="48"/>
<ellipse cx="715.5" cy="59" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="724.5" y="62.2104">value : enum</text>
</a>
<path d="M136.29,63.18 C141.93,65.17 147.56,67.13 153,69 C209.46,88.41 272.82,109.24 324.27,125.91 " fill="none" id="C_0000095618295648274199-&gt;C_0000932856332558460389" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="326.49,119.27,343.36,132.09,322.18,132.59,326.49,119.27" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M283.45,69.22 C307.12,84.04 336.09,102.19 361.72,118.24 " fill="none" id="C_0000979129381790761728-&gt;C_0000932856332558460389" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="365.59,112.4,378.82,128.95,358.16,124.27,365.59,112.4" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M426,69.22 C426,81.15 426,95.23 426,108.63 " fill="none" id="C_0002090787690027341836-&gt;C_0000932856332558460389" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="433,108.74,426,128.74,419,108.74,433,108.74" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M564.04,69.22 C541.24,83.97 513.34,102.01 488.61,118.01 " fill="none" id="C_0000500603075237446075-&gt;C_0000932856332558460389" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="492.28,123.97,471.69,128.95,484.68,112.21,492.28,123.97" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M704.13,62.94 C698.34,65 692.57,67.04 687,69 C634.55,87.43 576.02,107.54 527.69,124.02 " fill="none" id="C_0002111316837513419920-&gt;C_0000932856332558460389" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="529.88,130.67,508.69,130.5,525.36,117.42,529.88,130.67" style="stroke: #A80036; stroke-width: 1.0;"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,264 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" aria-roledescription="classDiagram" role="graphics-document document" viewBox="0 0 1022.859375 224" style="max-width: 1022.86px; background-color: white;" width="1022.859375" id="my-svg">
<style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#my-svg g.classGroup text .title{font-weight:bolder;}#my-svg .nodeLabel,#my-svg .edgeLabel{color:#131300;}#my-svg .edgeLabel .label rect{fill:#ECECFF;}#my-svg .label text{fill:#131300;}#my-svg .edgeLabel .label span{background:#ECECFF;}#my-svg .classTitle{font-weight:bolder;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .divider{stroke:#9370DB;stroke-width:1;}#my-svg g.clickable{cursor:pointer;}#my-svg g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#my-svg g.classGroup line{stroke:#9370DB;stroke-width:1;}#my-svg .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#my-svg .classLabel .label{fill:#9370DB;font-size:10px;}#my-svg .relation{stroke:#333333;stroke-width:1;fill:none;}#my-svg .dashed-line{stroke-dasharray:3;}#my-svg .dotted-line{stroke-dasharray:1 2;}#my-svg #compositionStart,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #compositionEnd,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionStart,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionEnd,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationStart,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationEnd,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopStart,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopEnd,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg .edgeTerminals{font-size:11px;}#my-svg .classTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style>
<g>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker aggregation classDiagram" id="classDiagram-aggregationStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker aggregation classDiagram" id="classDiagram-aggregationEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker extension classDiagram" id="classDiagram-extensionStart">
<path d="M 1,7 L18,13 V 1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker extension classDiagram" id="classDiagram-extensionEnd">
<path d="M 1,1 V 13 L18,7 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker composition classDiagram" id="classDiagram-compositionStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker composition classDiagram" id="classDiagram-compositionEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker dependency classDiagram" id="classDiagram-dependencyStart">
<path d="M 5,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker dependency classDiagram" id="classDiagram-dependencyEnd">
<path d="M 18,7 L9,13 L14,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker lollipop classDiagram" id="classDiagram-lollipopStart">
<circle r="6" cy="7" cx="6" fill="white" stroke="black"/>
</marker>
</defs>
<g class="root">
<g class="clusters"/>
<g class="edgePaths">
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id1" d="M83.9765625,87L83.9765625,91.16666666666667C83.9765625,95.33333333333333,83.9765625,103.66666666666667,140.33463541666666,116.19783708151317C196.69270833333334,128.72900749635969,309.4088541666667,145.45801499271937,365.7669270833333,153.8225187408992L422.125,162.18702248907906"/>
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id2" d="M285.9375,87L285.9375,91.16666666666667C285.9375,95.33333333333333,285.9375,103.66666666666667,308.6354166666667,114.12679115171055C331.3333333333333,124.58691563675443,376.7291666666667,137.17383127350885,399.4270833333333,143.46728909188607L422.125,149.7607469102633"/>
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id3" d="M518.5625,87L518.5625,91.16666666666667C518.5625,95.33333333333333,518.5625,103.66666666666667,518.5625,112C518.5625,120.33333333333333,518.5625,128.66666666666666,518.5625,132.83333333333334L518.5625,137"/>
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id4" d="M744.0625,87L744.0625,91.16666666666667C744.0625,95.33333333333333,744.0625,103.66666666666667,722.5520833333334,113.98598022912047C701.0416666666666,124.30529379157429,658.0208333333334,136.61058758314854,636.5104166666666,142.7632344789357L615,148.91588137472283"/>
<path marker-end="url(#classDiagram-extensionEnd)" style="fill:none" class="edge-pattern-dashed relation" id="id5" d="M938.890625,87L938.890625,91.16666666666667C938.890625,95.33333333333333,938.890625,103.66666666666667,884.9088541666666,116.11691944537377C830.9270833333334,128.56717222408088,722.9635416666666,145.13434444816178,668.9817708333334,153.41793056020222L615,161.70151667224266"/>
</g>
<g class="edgeLabels">
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(undefined, undefined)" class="edgeLabel">
<g transform="translate(0, 0)" class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel"/>
</span>
</div>
</foreignObject>
</g>
</g>
</g>
<g class="nodes">
<a transform="translate(518.5625, 176.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L4">
<g title="is_numeric" id="classId-C_0000932856332558460389-0" class="node default clickable">
<rect height="79" width="192.875" y="-39.5" x="-96.4375" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="96.4375" x1="-96.4375" class="divider"/>
<line y2="28.5" y1="28.5" x2="96.4375" x1="-96.4375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -88.9375, -32)" height="18" width="177.875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">is_numeric&lt;typename&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -88.9375, 2)" height="18" width="100.953125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+value : enum</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(83.9765625, 47.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L8">
<g title="is_numeric" id="classId-C_0000095618295648274199-1" class="node default clickable">
<rect height="79" width="151.953125" y="-39.5" x="-75.9765625" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="75.9765625" x1="-75.9765625" class="divider"/>
<line y2="28.5" y1="28.5" x2="75.9765625" x1="-75.9765625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -68.4765625, -32)" height="18" width="136.953125" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">is_numeric&lt;float&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -68.4765625, 2)" height="18" width="100.953125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+value : enum</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(285.9375, 47.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L12">
<g title="is_numeric" id="classId-C_0000979129381790761728-2" class="node default clickable">
<rect height="79" width="151.96875" y="-39.5" x="-75.984375" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="75.984375" x1="-75.984375" class="divider"/>
<line y2="28.5" y1="28.5" x2="75.984375" x1="-75.984375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -68.484375, -32)" height="18" width="136.96875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">is_numeric&lt;char&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -68.484375, 2)" height="18" width="100.953125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+value : enum</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(518.5625, 47.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L16">
<g title="is_numeric" id="classId-C_0002090787690027341836-3" class="node default clickable">
<rect height="79" width="213.28125" y="-39.5" x="-106.640625" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="106.640625" x1="-106.640625" class="divider"/>
<line y2="28.5" y1="28.5" x2="106.640625" x1="-106.640625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -99.140625, -32)" height="18" width="198.28125" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">is_numeric&lt;unsigned int&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -99.140625, 2)" height="18" width="100.953125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+value : enum</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(744.0625, 47.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L20">
<g title="is_numeric" id="classId-C_0000500603075237446075-4" class="node default clickable">
<rect height="79" width="137.71875" y="-39.5" x="-68.859375" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="68.859375" x1="-68.859375" class="divider"/>
<line y2="28.5" y1="28.5" x2="68.859375" x1="-68.859375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -61.359375, -32)" height="18" width="122.71875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">is_numeric&lt;int&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -61.359375, 2)" height="18" width="100.953125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+value : enum</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(938.890625, 47.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00016/t00016.cc#L24">
<g title="is_numeric" id="classId-C_0002111316837513419920-5" class="node default clickable">
<rect height="79" width="151.9375" y="-39.5" x="-75.96875" class="outer title-state"/>
<line y2="-9.5" y1="-9.5" x2="75.96875" x1="-75.96875" class="divider"/>
<line y2="28.5" y1="28.5" x2="75.96875" x1="-75.96875" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -68.46875, -32)" height="18" width="136.9375" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">is_numeric&lt;bool&gt;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -68.46875, 2)" height="18" width="100.953125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">+value : enum</span>
</div>
</foreignObject>
</g>
</g>
</a>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="256px" preserveAspectRatio="none" style="width:799px;height:256px;" version="1.1" viewBox="0 0 799 256" width="799px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="fy3fkpxoucr2d" width="300%" x="-1" y="-1">
<filter height="300%" id="fvw6cznjikr4s" width="300%" x="-1" y="-1">
<feGaussianBlur result="blurOut" stdDeviation="2.0"/>
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
@@ -9,177 +9,169 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L5" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L5" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fy3fkpxoucr2d)" height="48" id="C_0000000901" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L5" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L5" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fvw6cznjikr4s)" height="48" id="C_0000121332093434690887" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="197"/>
<ellipse cx="21" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,218.6406 Q23.3906,218.9375 22.75,219.0781 Q22.1094,219.2344 21.4063,219.2344 Q18.9063,219.2344 17.5781,217.5938 Q16.2656,215.9375 16.2656,212.8125 Q16.2656,209.6875 17.5781,208.0313 Q18.9063,206.375 21.4063,206.375 Q22.1094,206.375 22.75,206.5313 Q23.4063,206.6875 23.9688,206.9844 L23.9688,209.7031 Q23.3438,209.125 22.75,208.8594 Q22.1563,208.5781 21.5313,208.5781 Q20.1875,208.5781 19.5,209.6563 Q18.8125,210.7188 18.8125,212.8125 Q18.8125,214.9063 19.5,215.9844 Q20.1875,217.0469 21.5313,217.0469 Q22.1563,217.0469 22.75,216.7813 Q23.3438,216.5 23.9688,215.9219 L23.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="35" y="217.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="45" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="45" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L8" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L8" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fy3fkpxoucr2d)" height="48" id="C_0000000905" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="81" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L7" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L7" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fvw6cznjikr4s)" height="48" id="C_0001424864837456200487" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="81" y="197"/>
<ellipse cx="96" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M98.9688,218.6406 Q98.3906,218.9375 97.75,219.0781 Q97.1094,219.2344 96.4063,219.2344 Q93.9063,219.2344 92.5781,217.5938 Q91.2656,215.9375 91.2656,212.8125 Q91.2656,209.6875 92.5781,208.0313 Q93.9063,206.375 96.4063,206.375 Q97.1094,206.375 97.75,206.5313 Q98.4063,206.6875 98.9688,206.9844 L98.9688,209.7031 Q98.3438,209.125 97.75,208.8594 Q97.1563,208.5781 96.5313,208.5781 Q95.1875,208.5781 94.5,209.6563 Q93.8125,210.7188 93.8125,212.8125 Q93.8125,214.9063 94.5,215.9844 Q95.1875,217.0469 96.5313,217.0469 Q97.1563,217.0469 97.75,216.7813 Q98.3438,216.5 98.9688,215.9219 L98.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="110" y="217.1543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="82" x2="120" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="82" x2="120" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L11" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L11" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fy3fkpxoucr2d)" height="48" id="C_0000000909" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="156" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L9" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L9" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fvw6cznjikr4s)" height="48" id="C_0002151170391844743478" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="156" y="197"/>
<ellipse cx="171" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M173.9688,218.6406 Q173.3906,218.9375 172.75,219.0781 Q172.1094,219.2344 171.4063,219.2344 Q168.9063,219.2344 167.5781,217.5938 Q166.2656,215.9375 166.2656,212.8125 Q166.2656,209.6875 167.5781,208.0313 Q168.9063,206.375 171.4063,206.375 Q172.1094,206.375 172.75,206.5313 Q173.4063,206.6875 173.9688,206.9844 L173.9688,209.7031 Q173.3438,209.125 172.75,208.8594 Q172.1563,208.5781 171.5313,208.5781 Q170.1875,208.5781 169.5,209.6563 Q168.8125,210.7188 168.8125,212.8125 Q168.8125,214.9063 169.5,215.9844 Q170.1875,217.0469 171.5313,217.0469 Q172.1563,217.0469 172.75,216.7813 Q173.3438,216.5 173.9688,215.9219 L173.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="185" y="217.1543">C</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="157" x2="195" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="157" x2="195" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L14" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L14" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fy3fkpxoucr2d)" height="48" id="C_0000000913" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="231.5" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L11" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L11" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fvw6cznjikr4s)" height="48" id="C_0001378112127131766972" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="231.5" y="197"/>
<ellipse cx="246.5" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M249.4688,218.6406 Q248.8906,218.9375 248.25,219.0781 Q247.6094,219.2344 246.9063,219.2344 Q244.4063,219.2344 243.0781,217.5938 Q241.7656,215.9375 241.7656,212.8125 Q241.7656,209.6875 243.0781,208.0313 Q244.4063,206.375 246.9063,206.375 Q247.6094,206.375 248.25,206.5313 Q248.9063,206.6875 249.4688,206.9844 L249.4688,209.7031 Q248.8438,209.125 248.25,208.8594 Q247.6563,208.5781 247.0313,208.5781 Q245.6875,208.5781 245,209.6563 Q244.3125,210.7188 244.3125,212.8125 Q244.3125,214.9063 245,215.9844 Q245.6875,217.0469 247.0313,217.0469 Q247.6563,217.0469 248.25,216.7813 Q248.8438,216.5 249.4688,215.9219 L249.4688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="260.5" y="217.1543">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="232.5" x2="271.5" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="232.5" x2="271.5" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L17" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L17" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fy3fkpxoucr2d)" height="48" id="C_0000000917" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="308" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L13" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L13" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fvw6cznjikr4s)" height="48" id="C_0001535300935831802489" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="308" y="197"/>
<ellipse cx="323" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M325.9688,218.6406 Q325.3906,218.9375 324.75,219.0781 Q324.1094,219.2344 323.4063,219.2344 Q320.9063,219.2344 319.5781,217.5938 Q318.2656,215.9375 318.2656,212.8125 Q318.2656,209.6875 319.5781,208.0313 Q320.9063,206.375 323.4063,206.375 Q324.1094,206.375 324.75,206.5313 Q325.4063,206.6875 325.9688,206.9844 L325.9688,209.7031 Q325.3438,209.125 324.75,208.8594 Q324.1563,208.5781 323.5313,208.5781 Q322.1875,208.5781 321.5,209.6563 Q320.8125,210.7188 320.8125,212.8125 Q320.8125,214.9063 321.5,215.9844 Q322.1875,217.0469 323.5313,217.0469 Q324.1563,217.0469 324.75,216.7813 Q325.3438,216.5 325.9688,215.9219 L325.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="337" y="217.1543">E</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="309" x2="347" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="309" x2="347" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L20" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L20" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fy3fkpxoucr2d)" height="48" id="C_0000000921" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="383.5" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L15" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L15" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fvw6cznjikr4s)" height="48" id="C_0001803800465279710134" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="383.5" y="197"/>
<ellipse cx="398.5" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M401.4688,218.6406 Q400.8906,218.9375 400.25,219.0781 Q399.6094,219.2344 398.9063,219.2344 Q396.4063,219.2344 395.0781,217.5938 Q393.7656,215.9375 393.7656,212.8125 Q393.7656,209.6875 395.0781,208.0313 Q396.4063,206.375 398.9063,206.375 Q399.6094,206.375 400.25,206.5313 Q400.9063,206.6875 401.4688,206.9844 L401.4688,209.7031 Q400.8438,209.125 400.25,208.8594 Q399.6563,208.5781 399.0313,208.5781 Q397.6875,208.5781 397,209.6563 Q396.3125,210.7188 396.3125,212.8125 Q396.3125,214.9063 397,215.9844 Q397.6875,217.0469 399.0313,217.0469 Q399.6563,217.0469 400.25,216.7813 Q400.8438,216.5 401.4688,215.9219 L401.4688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="7" x="412.5" y="217.1543">F</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="384.5" x2="421.5" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="384.5" x2="421.5" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L23" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L23" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fy3fkpxoucr2d)" height="48" id="C_0000000925" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="457.5" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L17" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L17" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fvw6cznjikr4s)" height="48" id="C_0001135797791892670246" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="457.5" y="197"/>
<ellipse cx="472.5" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M475.4688,218.6406 Q474.8906,218.9375 474.25,219.0781 Q473.6094,219.2344 472.9063,219.2344 Q470.4063,219.2344 469.0781,217.5938 Q467.7656,215.9375 467.7656,212.8125 Q467.7656,209.6875 469.0781,208.0313 Q470.4063,206.375 472.9063,206.375 Q473.6094,206.375 474.25,206.5313 Q474.9063,206.6875 475.4688,206.9844 L475.4688,209.7031 Q474.8438,209.125 474.25,208.8594 Q473.6563,208.5781 473.0313,208.5781 Q471.6875,208.5781 471,209.6563 Q470.3125,210.7188 470.3125,212.8125 Q470.3125,214.9063 471,215.9844 Q471.6875,217.0469 473.0313,217.0469 Q473.6563,217.0469 474.25,216.7813 Q474.8438,216.5 475.4688,215.9219 L475.4688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="486.5" y="217.1543">G</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="458.5" x2="497.5" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="458.5" x2="497.5" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L26" target="_top" title="H" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L26" xlink:show="new" xlink:title="H" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fy3fkpxoucr2d)" height="48" id="C_0000000929" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="533.5" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L19" target="_top" title="H" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L19" xlink:show="new" xlink:title="H" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fvw6cznjikr4s)" height="48" id="C_0001243547836571712317" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="533.5" y="197"/>
<ellipse cx="548.5" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M551.4688,218.6406 Q550.8906,218.9375 550.25,219.0781 Q549.6094,219.2344 548.9063,219.2344 Q546.4063,219.2344 545.0781,217.5938 Q543.7656,215.9375 543.7656,212.8125 Q543.7656,209.6875 545.0781,208.0313 Q546.4063,206.375 548.9063,206.375 Q549.6094,206.375 550.25,206.5313 Q550.9063,206.6875 551.4688,206.9844 L551.4688,209.7031 Q550.8438,209.125 550.25,208.8594 Q549.6563,208.5781 549.0313,208.5781 Q547.6875,208.5781 547,209.6563 Q546.3125,210.7188 546.3125,212.8125 Q546.3125,214.9063 547,215.9844 Q547.6875,217.0469 549.0313,217.0469 Q549.6563,217.0469 550.25,216.7813 Q550.8438,216.5 551.4688,215.9219 L551.4688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="562.5" y="217.1543">H</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="534.5" x2="573.5" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="534.5" x2="573.5" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L29" target="_top" title="I" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L29" xlink:show="new" xlink:title="I" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fy3fkpxoucr2d)" height="48" id="C_0000000933" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="609.5" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L21" target="_top" title="I" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L21" xlink:show="new" xlink:title="I" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fvw6cznjikr4s)" height="48" id="C_0000387733199705628658" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="609.5" y="197"/>
<ellipse cx="624.5" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M627.4688,218.6406 Q626.8906,218.9375 626.25,219.0781 Q625.6094,219.2344 624.9063,219.2344 Q622.4063,219.2344 621.0781,217.5938 Q619.7656,215.9375 619.7656,212.8125 Q619.7656,209.6875 621.0781,208.0313 Q622.4063,206.375 624.9063,206.375 Q625.6094,206.375 626.25,206.5313 Q626.9063,206.6875 627.4688,206.9844 L627.4688,209.7031 Q626.8438,209.125 626.25,208.8594 Q625.6563,208.5781 625.0313,208.5781 Q623.6875,208.5781 623,209.6563 Q622.3125,210.7188 622.3125,212.8125 Q622.3125,214.9063 623,215.9844 Q623.6875,217.0469 625.0313,217.0469 Q625.6563,217.0469 626.25,216.7813 Q626.8438,216.5 627.4688,215.9219 L627.4688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="3" x="638.5" y="217.1543">I</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="610.5" x2="643.5" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="610.5" x2="643.5" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L32" target="_top" title="J" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L32" xlink:show="new" xlink:title="J" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fy3fkpxoucr2d)" height="48" id="C_0000000937" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="679.5" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L23" target="_top" title="J" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L23" xlink:show="new" xlink:title="J" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fvw6cznjikr4s)" height="48" id="C_0000747991828672433537" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="679.5" y="197"/>
<ellipse cx="694.5" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M697.4688,218.6406 Q696.8906,218.9375 696.25,219.0781 Q695.6094,219.2344 694.9063,219.2344 Q692.4063,219.2344 691.0781,217.5938 Q689.7656,215.9375 689.7656,212.8125 Q689.7656,209.6875 691.0781,208.0313 Q692.4063,206.375 694.9063,206.375 Q695.6094,206.375 696.25,206.5313 Q696.9063,206.6875 697.4688,206.9844 L697.4688,209.7031 Q696.8438,209.125 696.25,208.8594 Q695.6563,208.5781 695.0313,208.5781 Q693.6875,208.5781 693,209.6563 Q692.3125,210.7188 692.3125,212.8125 Q692.3125,214.9063 693,215.9844 Q693.6875,217.0469 695.0313,217.0469 Q695.6563,217.0469 696.25,216.7813 Q696.8438,216.5 697.4688,215.9219 L697.4688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="3" x="708.5" y="217.1543">J</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="680.5" x2="713.5" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="680.5" x2="713.5" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L35" target="_top" title="K" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L35" xlink:show="new" xlink:title="K" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fy3fkpxoucr2d)" height="48" id="C_0000000941" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="749.5" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L25" target="_top" title="K" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L25" xlink:show="new" xlink:title="K" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fvw6cznjikr4s)" height="48" id="C_0001783571342994833467" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="749.5" y="197"/>
<ellipse cx="764.5" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M767.4688,218.6406 Q766.8906,218.9375 766.25,219.0781 Q765.6094,219.2344 764.9063,219.2344 Q762.4063,219.2344 761.0781,217.5938 Q759.7656,215.9375 759.7656,212.8125 Q759.7656,209.6875 761.0781,208.0313 Q762.4063,206.375 764.9063,206.375 Q765.6094,206.375 766.25,206.5313 Q766.9063,206.6875 767.4688,206.9844 L767.4688,209.7031 Q766.8438,209.125 766.25,208.8594 Q765.6563,208.5781 765.0313,208.5781 Q763.6875,208.5781 763,209.6563 Q762.3125,210.7188 762.3125,212.8125 Q762.3125,214.9063 763,215.9844 Q763.6875,217.0469 765.0313,217.0469 Q765.6563,217.0469 766.25,216.7813 Q766.8438,216.5 767.4688,215.9219 L767.4688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="7" x="778.5" y="217.1543">K</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="750.5" x2="787.5" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="750.5" x2="787.5" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L38" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L38" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fy3fkpxoucr2d)" height="112.0234" id="C_0000000945" style="stroke: #A80036; stroke-width: 1.5;" width="359" x="206.5" y="8"/>
<ellipse cx="377.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M380.7188,29.6406 Q380.1406,29.9375 379.5,30.0781 Q378.8594,30.2344 378.1563,30.2344 Q375.6563,30.2344 374.3281,28.5938 Q373.0156,26.9375 373.0156,23.8125 Q373.0156,20.6875 374.3281,19.0313 Q375.6563,17.375 378.1563,17.375 Q378.8594,17.375 379.5,17.5313 Q380.1563,17.6875 380.7188,17.9844 L380.7188,20.7031 Q380.0938,20.125 379.5,19.8594 Q378.9063,19.5781 378.2813,19.5781 Q376.9375,19.5781 376.25,20.6563 Q375.5625,21.7188 375.5625,23.8125 Q375.5625,25.9063 376.25,26.9844 Q376.9375,28.0469 378.2813,28.0469 Q378.9063,28.0469 379.5,27.7813 Q380.0938,27.5 380.7188,26.9219 L380.7188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="398.25" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="207.5" x2="564.5" y1="40" y2="40"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L27" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L27" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fvw6cznjikr4s)" height="112.0234" id="C_0000287495916564113342" style="stroke: #A80036; stroke-width: 1.5;" width="379" x="213.5" y="8"/>
<ellipse cx="394.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M397.7188,29.6406 Q397.1406,29.9375 396.5,30.0781 Q395.8594,30.2344 395.1563,30.2344 Q392.6563,30.2344 391.3281,28.5938 Q390.0156,26.9375 390.0156,23.8125 Q390.0156,20.6875 391.3281,19.0313 Q392.6563,17.375 395.1563,17.375 Q395.8594,17.375 396.5,17.5313 Q397.1563,17.6875 397.7188,17.9844 L397.7188,20.7031 Q397.0938,20.125 396.5,19.8594 Q395.9063,19.5781 395.2813,19.5781 Q393.9375,19.5781 393.25,20.6563 Q392.5625,21.7188 392.5625,23.8125 Q392.5625,25.9063 393.25,26.9844 Q393.9375,28.0469 395.2813,28.0469 Q395.9063,28.0469 396.5,27.7813 Q397.0938,27.5 397.7188,26.9219 L397.7188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="415.25" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="214.5" x2="591.5" y1="40" y2="40"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L49" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L49" xlink:show="new" xlink:title="some_int" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="212.5" y="46"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="214.5" y="48"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L28" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L28" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="219.5" y="46"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="221.5" y="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L49" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L49" xlink:show="new" xlink:title="some_int" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="78" x="226.5" y="54.2104">some_int : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L28" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L28" xlink:show="new" xlink:title="R" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="353" x="233.5" y="54.2104">R(int &amp; some_int, C &amp; cc, const E &amp; ee, F &amp;&amp; ff, I *&amp; ii) : void</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L50" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L50" xlink:show="new" xlink:title="some_int_pointer" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="212.5" y="58.8047"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="214.5" y="60.8047"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="214.5" x2="591.5" y1="60.8047" y2="60.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L38" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L38" xlink:show="new" xlink:title="some_int" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="219.5" y="66.8047"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="221.5" y="68.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L50" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L50" xlink:show="new" xlink:title="some_int_pointer" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="130" x="226.5" y="67.0151">some_int_pointer : int*</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L38" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L38" xlink:show="new" xlink:title="some_int" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="78" x="233.5" y="75.0151">some_int : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L51" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L51" xlink:show="new" xlink:title="some_int_pointer_pointer" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="212.5" y="71.6094"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="214.5" y="73.6094"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L39" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L39" xlink:show="new" xlink:title="some_int_pointer" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="219.5" y="79.6094"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="221.5" y="81.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L51" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L51" xlink:show="new" xlink:title="some_int_pointer_pointer" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="182" x="226.5" y="79.8198">some_int_pointer_pointer : int**</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L39" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L39" xlink:show="new" xlink:title="some_int_pointer" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="134" x="233.5" y="87.8198">some_int_pointer : int *</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L52" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L52" xlink:show="new" xlink:title="some_int_reference" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="212.5" y="84.4141"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="214.5" y="86.4141"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L40" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L40" xlink:show="new" xlink:title="some_int_pointer_pointer" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="219.5" y="92.4141"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="221.5" y="94.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L52" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L52" xlink:show="new" xlink:title="some_int_reference" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="149" x="226.5" y="92.6245">some_int_reference : int&amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L40" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L40" xlink:show="new" xlink:title="some_int_pointer_pointer" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="186" x="233.5" y="100.6245">some_int_pointer_pointer : int **</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="207.5" x2="564.5" y1="99.2188" y2="99.2188"/>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L39" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L39" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="212.5" y="105.2188"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="214.5" y="107.2188"/>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L41" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L41" xlink:show="new" xlink:title="some_int_reference" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="219.5" y="105.2188"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="221.5" y="107.2188"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L39" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/1de4a40ae9dd5c8b46da9b6ac3d20a8a75bfd7bd/tests/t00017/t00017.cc#L39" xlink:show="new" xlink:title="R" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="333" x="226.5" y="113.4292">R(int&amp; some_int, C&amp; cc, E const&amp; ee, F&amp;&amp; ff, I*&amp; ii) : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L41" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L41" xlink:show="new" xlink:title="some_int_reference" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="153" x="233.5" y="113.4292">some_int_reference : int &amp;</text>
</a>
<path d="M206.45,108.78 C189.08,119.62 173.64,133.14 162,150 C153.6,162.17 156.07,178.21 161.11,191.86 " fill="none" id="C_0000000945-&gt;C_0000000909" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="163.06,196.77,163.4575,186.9292,161.2154,192.1227,156.0218,189.8806,163.06,196.77" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M297.03,120.16 C282.72,129.76 268.27,139.91 255,150 C235.64,164.73 215.11,183 199.84,197.19 " fill="none" id="C_0000000945-&gt;C_0000000909-1" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="196.07,200.7,205.385,197.5015,199.7319,197.2956,199.9379,191.6424,196.07,200.7" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="12" x="256" y="163.0669">-c</text>
<path d="M328.46,120.3 C321.75,129.55 315.91,139.56 312,150 C306.98,163.4 309.68,178.85 314.18,191.83 " fill="none" id="C_0000000945-&gt;C_0000000917" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="316.06,196.85,316.6452,187.0185,314.3044,192.1684,309.1546,189.8275,316.06,196.85" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M365.39,120.08 C356.32,144.31 346.06,171.73 338.59,191.71 " fill="none" id="C_0000000945-&gt;C_0000000917-1" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="336.75,196.62,343.6366,189.5791,338.4931,191.9337,336.1385,186.7901,336.75,196.62" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="13" x="355" y="163.0669">-e</text>
<path d="M392.04,120.08 C394.69,144.21 397.68,171.5 399.87,191.46 " fill="none" id="C_0000000945-&gt;C_0000000921" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="400.44,196.62,403.4128,187.2305,399.8831,191.6511,395.4625,188.1215,400.44,196.62" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M402.61,133.18 C403.57,138.85 404.39,144.5 405,150 C405.83,157.51 405.14,159.45 405,167 C404.82,176.76 404.44,187.52 404.07,196.79 " fill="none" id="C_0000000945&lt;-C_0000000921" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="400.15,120.03,397.3198,126.6625,402.3535,131.826,405.1837,125.1935,400.15,120.03" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="9" x="407" y="163.0669">-f</text>
<path d="M472.34,120.01 C509.26,143.62 552.81,171.57 592,197 C596.21,199.73 600.69,202.66 604.99,205.48 " fill="none" id="C_0000000945-&gt;C_0000000933" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="609.22,208.26,603.8846,199.9815,605.0379,205.5195,599.4999,206.6728,609.22,208.26" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M511.39,120.16 C527.93,129.27 544.24,139.28 559,150 C576.42,162.65 593.29,179.99 605.88,194.24 " fill="none" id="C_0000000945-&gt;C_0000000933-1" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="609.31,198.17,606.414,188.7565,606.0256,194.4,600.3821,194.0116,609.31,198.17" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="579" y="163.0669">-i</text>
<path d="M193.72,107.57 C160.62,118.83 127.43,132.79 98,150 C77.23,162.14 57.93,181.54 44.55,196.83 " fill="none" id="C_0000000945&lt;-C_0000000901" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="206.4,103.39,199.449,101.4709,195.004,107.1491,201.955,109.0682,206.4,103.39" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="13" x="99" y="163.0669">-a</text>
<path d="M206.39,105.35 C180.14,116.75 154.94,131.34 134,150 C121.56,161.08 113.43,177.85 108.35,192.19 " fill="none" id="C_0000000945-&gt;C_0000000905" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="106.75,196.95,113.4236,189.7069,108.3526,192.2138,105.8457,187.1427,106.75,196.95" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="13" x="135" y="163.0669">-b</text>
<path d="M314.7,120.06 C304.75,129.44 295.15,139.55 287,150 C277.1,162.69 268.87,178.62 262.88,192.08 " fill="none" id="C_0000000945-&gt;C_0000000913" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="260.78,196.92,268.0444,190.2695,262.7788,192.3369,260.7115,187.0714,260.78,196.92" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="13" x="288" y="163.0669">-d</text>
<path d="M418.69,120.08 C433.2,144.51 449.63,172.2 461.51,192.22 " fill="none" id="C_0000000945-&gt;C_0000000925" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="464.13,196.62,462.9678,186.84,461.5743,192.3225,456.0918,190.929,464.13,196.62" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="13" x="447" y="163.0669">-g</text>
<path d="M445.7,120.08 C474.59,146.73 507.67,177.26 529.59,197.48 " fill="none" id="C_0000000945-&gt;C_0000000929" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="533.28,200.88,529.3755,191.8382,529.6043,197.4904,523.9521,197.7192,533.28,200.88" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="13" x="496" y="163.0669">-h</text>
<path d="M533.93,120.04 C555.11,129.31 576.36,139.39 596,150 C624.74,165.53 655.23,187.52 675.1,202.69 " fill="none" id="C_0000000945-&gt;C_0000000937" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="679.17,205.82,674.4737,197.1629,675.2063,202.7721,669.5971,203.5048,679.17,205.82" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="624" y="163.0669">-j</text>
<path d="M562.91,120.01 C589.34,129.36 616.06,139.48 641,150 C682.94,167.69 692.42,174.52 732,197 C736.15,199.36 740.51,201.95 744.72,204.52 " fill="none" id="C_0000000945-&gt;C_0000000941" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="749.2,207.29,743.6436,199.1582,744.9456,204.6631,739.4407,205.9652,749.2,207.29" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="12" x="680" y="163.0669">-k</text>
<path d="M227.33,124.78 C173.51,145.32 114.85,170.01 63,197 C57.36,199.93 51.44,203.42 46.03,206.78 " fill="none" id="C_0000287495916564113342&lt;-C_0000121332093434690887" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="239.82,120.06,232.7927,118.4422,228.5966,124.3067,235.6239,125.9245,239.82,120.06" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="13" x="164" y="163.0669">-a</text>
<path d="M286.66,120.01 C239.94,142.86 185.91,170.26 138,197 C133.93,199.27 129.67,201.79 125.55,204.29 " fill="none" id="C_0000287495916564113342-&gt;C_0001424864837456200487" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="121.15,207,130.9093,205.6752,125.4044,204.3731,126.7064,198.8682,121.15,207" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="13" x="226" y="163.0669">-b</text>
<path d="M322.33,120.08 C279.51,149.32 229.87,183.22 200.8,203.07 " fill="none" id="C_0000287495916564113342-&gt;C_0002151170391844743478" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="196.32,206.13,206.0096,204.3659,200.4514,203.3138,201.5036,197.7556,196.32,206.13" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="12" x="277" y="163.0669">-c</text>
<path d="M349.34,120.08 C324.54,145.54 296.31,174.52 276.66,194.69 " fill="none" id="C_0000287495916564113342-&gt;C_0001378112127131766972" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="272.85,198.6,281.9915,194.9348,276.3352,195.0148,276.2552,189.3585,272.85,198.6" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="13" x="320" y="163.0669">-d</text>
<path d="M376.35,120.08 C364.57,144.41 351.24,171.96 341.57,191.97 " fill="none" id="C_0000287495916564113342-&gt;C_0001535300935831802489" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="339.31,196.62,346.8402,190.272,341.4945,192.1225,339.6441,186.7768,339.31,196.62" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="13" x="363" y="163.0669">-e</text>
<path d="M403,133.26 C403,155.95 403,179.72 403,196.62 " fill="none" id="C_0000287495916564113342&lt;-C_0001803800465279710134" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="403,120.08,399,126.08,403,132.08,407,126.08,403,120.08" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="9" x="404" y="163.0669">-f</text>
<path d="M429.65,120.08 C441.43,144.41 454.76,171.96 464.43,191.97 " fill="none" id="C_0000287495916564113342-&gt;C_0001135797791892670246" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="466.69,196.62,466.3559,186.7768,464.5055,192.1225,459.1598,190.272,466.69,196.62" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="13" x="453" y="163.0669">-g</text>
<path d="M456.66,120.08 C481.46,145.54 509.69,174.52 529.34,194.69 " fill="none" id="C_0000287495916564113342-&gt;C_0001243547836571712317" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="533.15,198.6,529.7448,189.3585,529.6648,195.0148,524.0085,194.9348,533.15,198.6" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="13" x="502" y="163.0669">-h</text>
<path d="M482.6,120.08 C526.05,150.15 576.62,185.14 604.91,204.71 " fill="none" id="C_0000287495916564113342-&gt;C_0000387733199705628658" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="609.25,207.72,604.1332,199.3046,605.1411,204.871,599.5748,205.8789,609.25,207.72" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="550" y="163.0669">-i</text>
<path d="M517.59,120.01 C563.14,142.75 615.64,170.06 662,197 C666.34,199.52 670.88,202.35 675.2,205.15 " fill="none" id="C_0000287495916564113342-&gt;C_0000747991828672433537" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="679.43,207.91,674.0946,199.6315,675.2479,205.1695,669.7099,206.3228,679.43,207.91" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="608" y="163.0669">-j</text>
<path d="M559.13,120.02 C614.82,141.62 677.28,168.16 732,197 C736.23,199.23 740.62,201.76 744.84,204.3 " fill="none" id="C_0000287495916564113342-&gt;C_0001783571342994833467" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="749.33,207.05,743.7539,198.9317,745.0693,204.4335,739.5675,205.7489,749.33,207.05" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="12" x="664" y="163.0669">-k</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -0,0 +1,445 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" aria-roledescription="classDiagram" role="graphics-document document" viewBox="0 0 796.640625 308" style="max-width: 796.641px; background-color: white;" width="796.640625" id="my-svg">
<style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#my-svg g.classGroup text .title{font-weight:bolder;}#my-svg .nodeLabel,#my-svg .edgeLabel{color:#131300;}#my-svg .edgeLabel .label rect{fill:#ECECFF;}#my-svg .label text{fill:#131300;}#my-svg .edgeLabel .label span{background:#ECECFF;}#my-svg .classTitle{font-weight:bolder;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .divider{stroke:#9370DB;stroke-width:1;}#my-svg g.clickable{cursor:pointer;}#my-svg g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#my-svg g.classGroup line{stroke:#9370DB;stroke-width:1;}#my-svg .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#my-svg .classLabel .label{fill:#9370DB;font-size:10px;}#my-svg .relation{stroke:#333333;stroke-width:1;fill:none;}#my-svg .dashed-line{stroke-dasharray:3;}#my-svg .dotted-line{stroke-dasharray:1 2;}#my-svg #compositionStart,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #compositionEnd,#my-svg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #dependencyStart,#my-svg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionStart,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #extensionEnd,#my-svg .extension{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationStart,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #aggregationEnd,#my-svg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopStart,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg #lollipopEnd,#my-svg .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#my-svg .edgeTerminals{font-size:11px;}#my-svg .classTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style>
<g>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker aggregation classDiagram" id="classDiagram-aggregationStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker aggregation classDiagram" id="classDiagram-aggregationEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker extension classDiagram" id="classDiagram-extensionStart">
<path d="M 1,7 L18,13 V 1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker extension classDiagram" id="classDiagram-extensionEnd">
<path d="M 1,1 V 13 L18,7 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker composition classDiagram" id="classDiagram-compositionStart">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker composition classDiagram" id="classDiagram-compositionEnd">
<path d="M 18,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker dependency classDiagram" id="classDiagram-dependencyStart">
<path d="M 5,7 L9,13 L1,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="19" class="marker dependency classDiagram" id="classDiagram-dependencyEnd">
<path d="M 18,7 L9,13 L14,7 L9,1 Z"/>
</marker>
</defs>
<defs>
<marker orient="auto" markerHeight="240" markerWidth="190" refY="7" refX="0" class="marker lollipop classDiagram" id="classDiagram-lollipopStart">
<circle r="6" cy="7" cx="6" fill="white" stroke="black"/>
</marker>
</defs>
<g class="root">
<g class="clusters"/>
<g class="edgePaths">
<path marker-start="url(#classDiagram-aggregationStart)" style="fill:none" class="edge-pattern-solid relation" id="id1" d="M179.328125,160.26250717624868L152.98697916666666,168.38542264687388C126.64583333333333,176.5083381174991,73.96354166666667,192.75416905874954,47.622395833333336,206.54375119604143C21.28125,220.33333333333334,21.28125,231.66666666666666,21.28125,237.33333333333334L21.28125,243"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id2" d="M185.94534574468085,175L171.2617464539007,180.66666666666666C156.57814716312058,186.33333333333334,127.21094858156027,197.66666666666666,112.52734929078014,209C97.84375,220.33333333333334,97.84375,231.66666666666666,97.84375,237.33333333333334L97.84375,243"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id3" d="M240.3535904255319,175L229.36236702127658,180.66666666666666C218.3711436170213,186.33333333333334,196.38869680851064,197.66666666666666,185.3974734042553,209C174.40625,220.33333333333334,174.40625,231.66666666666666,174.40625,237.33333333333334L174.40625,243"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id4" d="M294.761835106383,175L287.4629875886525,180.66666666666666C280.164140070922,186.33333333333334,265.56644503546096,197.66666666666666,258.2675975177305,209C250.96875,220.33333333333334,250.96875,231.66666666666666,250.96875,237.33333333333334L250.96875,243"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id5" d="M348.85362367021276,175L345.22567597517735,180.66666666666666C341.59772828014184,186.33333333333334,334.3418328900709,197.66666666666666,330.71388519503546,209C327.0859375,220.33333333333334,327.0859375,231.66666666666666,327.0859375,237.33333333333334L327.0859375,243"/>
<path marker-start="url(#classDiagram-aggregationStart)" style="fill:none" class="edge-pattern-solid relation" id="id6" d="M402.3125,175L402.3125,180.66666666666666C402.3125,186.33333333333334,402.3125,197.66666666666666,402.3125,209C402.3125,220.33333333333334,402.3125,231.66666666666666,402.3125,237.33333333333334L402.3125,243"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id7" d="M456.40428856382977,175L460.0751883865248,180.66666666666666C463.74608820921986,186.33333333333334,471.08788785460996,197.66666666666666,474.75878767730495,209C478.4296875,220.33333333333334,478.4296875,231.66666666666666,478.4296875,237.33333333333334L478.4296875,243"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id8" d="M511.1289893617021,175L518.5137411347517,180.66666666666666C525.8984929078014,186.33333333333334,540.6679964539007,197.66666666666666,548.0527482269504,209C555.4375,220.33333333333334,555.4375,231.66666666666666,555.4375,237.33333333333334L555.4375,243"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id9" d="M563.0111369680851,175L573.916832890071,180.66666666666666C584.8225288120567,186.33333333333334,606.6339206560284,197.66666666666666,617.5396165780143,209C628.4453125,220.33333333333334,628.4453125,231.66666666666666,628.4453125,237.33333333333334L628.4453125,243"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id10" d="M613.9494680851064,175L628.3120567375887,180.66666666666666C642.674645390071,186.33333333333334,671.3998226950355,197.66666666666666,685.7624113475177,209C700.125,220.33333333333334,700.125,231.66666666666666,700.125,237.33333333333334L700.125,243"/>
<path marker-end="url(#classDiagram-dependencyEnd)" style="fill:none" class="edge-pattern-solid relation" id="id11" d="M625.296875,161.73424083769635L650.3072916666666,169.61186736474696C675.3177083333334,177.48949389179757,725.3385416666666,193.24474694589878,750.3489583333334,206.78904013961605C775.359375,220.33333333333334,775.359375,231.66666666666666,775.359375,237.33333333333334L775.359375,243"/>
</g>
<g class="edgeLabels">
<g transform="translate(21.28125, 209)" class="edgeLabel">
<g transform="translate(-7.1171875, -9)" class="label">
<foreignObject height="18" width="14.234375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-a</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(97.84375, 209)" class="edgeLabel">
<g transform="translate(-7.1171875, -9)" class="label">
<foreignObject height="18" width="14.234375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-b</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(174.40625, 209)" class="edgeLabel">
<g transform="translate(-6.6640625, -9)" class="label">
<foreignObject height="18" width="13.328125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-c</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(250.96875, 209)" class="edgeLabel">
<g transform="translate(-7.1171875, -9)" class="label">
<foreignObject height="18" width="14.234375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-d</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(327.0859375, 209)" class="edgeLabel">
<g transform="translate(-7.1171875, -9)" class="label">
<foreignObject height="18" width="14.234375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-e</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(402.3125, 209)" class="edgeLabel">
<g transform="translate(-4.890625, -9)" class="label">
<foreignObject height="18" width="9.78125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-f</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(478.4296875, 209)" class="edgeLabel">
<g transform="translate(-7.1171875, -9)" class="label">
<foreignObject height="18" width="14.234375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-g</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(555.4375, 209)" class="edgeLabel">
<g transform="translate(-7.1171875, -9)" class="label">
<foreignObject height="18" width="14.234375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-h</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(628.4453125, 209)" class="edgeLabel">
<g transform="translate(-4.4453125, -9)" class="label">
<foreignObject height="18" width="8.890625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-i</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(700.125, 209)" class="edgeLabel">
<g transform="translate(-4.4453125, -9)" class="label">
<foreignObject height="18" width="8.890625">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-j</span>
</span>
</div>
</foreignObject>
</g>
</g>
<g transform="translate(775.359375, 209)" class="edgeLabel">
<g transform="translate(-6.6640625, -9)" class="label">
<foreignObject height="18" width="13.328125">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="edgeLabel">
<span class="edgeLabel">-k</span>
</span>
</div>
</foreignObject>
</g>
</g>
</g>
<g class="nodes">
<a transform="translate(21.28125, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L5">
<g title="A" id="classId-C_0000121332093434690887-0" class="node default clickable">
<rect height="57" width="26.5625" y="-28.5" x="-13.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.28125" x1="-13.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.28125" x1="-13.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -21)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">A</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(97.84375, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L7">
<g title="B" id="classId-C_0001424864837456200487-1" class="node default clickable">
<rect height="57" width="26.5625" y="-28.5" x="-13.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.28125" x1="-13.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.28125" x1="-13.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -21)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">B</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(174.40625, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L9">
<g title="C" id="classId-C_0002151170391844743478-2" class="node default clickable">
<rect height="57" width="26.5625" y="-28.5" x="-13.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.28125" x1="-13.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.28125" x1="-13.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -21)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">C</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(250.96875, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L11">
<g title="D" id="classId-C_0001378112127131766972-3" class="node default clickable">
<rect height="57" width="26.5625" y="-28.5" x="-13.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.28125" x1="-13.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.28125" x1="-13.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -21)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">D</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(327.0859375, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L13">
<g title="E" id="classId-C_0001535300935831802489-4" class="node default clickable">
<rect height="57" width="25.671875" y="-28.5" x="-12.8359375" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="12.8359375" x1="-12.8359375" class="divider"/>
<line y2="17.5" y1="17.5" x2="12.8359375" x1="-12.8359375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.3359375, -21)" height="18" width="10.671875" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">E</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(402.3125, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L15">
<g title="F" id="classId-C_0001803800465279710134-5" class="node default clickable">
<rect height="57" width="24.78125" y="-28.5" x="-12.390625" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="12.390625" x1="-12.390625" class="divider"/>
<line y2="17.5" y1="17.5" x2="12.390625" x1="-12.390625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -4.890625, -21)" height="18" width="9.78125" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">F</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(478.4296875, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L17">
<g title="G" id="classId-C_0001135797791892670246-6" class="node default clickable">
<rect height="57" width="27.453125" y="-28.5" x="-13.7265625" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.7265625" x1="-13.7265625" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.7265625" x1="-13.7265625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -6.2265625, -21)" height="18" width="12.453125" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">G</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(555.4375, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L19">
<g title="H" id="classId-C_0001243547836571712317-7" class="node default clickable">
<rect height="57" width="26.5625" y="-28.5" x="-13.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.28125" x1="-13.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.28125" x1="-13.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -21)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">H</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(628.4453125, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L21">
<g title="I" id="classId-C_0000387733199705628658-8" class="node default clickable">
<rect height="57" width="19.453125" y="-28.5" x="-9.7265625" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="9.7265625" x1="-9.7265625" class="divider"/>
<line y2="17.5" y1="17.5" x2="9.7265625" x1="-9.7265625" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -2.2265625, -21)" height="18" width="4.453125" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">I</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(700.125, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L23">
<g title="J" id="classId-C_0000747991828672433537-9" class="node default clickable">
<rect height="57" width="23.90625" y="-28.5" x="-11.953125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="11.953125" x1="-11.953125" class="divider"/>
<line y2="17.5" y1="17.5" x2="11.953125" x1="-11.953125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -4.453125, -21)" height="18" width="8.90625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">J</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(775.359375, 271.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L25">
<g title="K" id="classId-C_0001783571342994833467-10" class="node default clickable">
<rect height="57" width="26.5625" y="-28.5" x="-13.28125" class="outer title-state"/>
<line y2="1.5" y1="1.5" x2="13.28125" x1="-13.28125" class="divider"/>
<line y2="17.5" y1="17.5" x2="13.28125" x1="-13.28125" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -21)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">K</span>
</div>
</foreignObject>
</g>
</g>
</a>
<a transform="translate(402.3125, 91.5)" xlink:href="https://github.com/bkryza/clang-uml/blob/701b2c5113d7d77a718034c63afc979ee5540a8e/tests/t00017/t00017.cc#L27">
<g title="R" id="classId-C_0000287495916564113342-11" class="node default clickable">
<rect height="167" width="445.96875" y="-83.5" x="-222.984375" class="outer title-state"/>
<line y2="-53.5" y1="-53.5" x2="222.984375" x1="-222.984375" class="divider"/>
<line y2="50.5" y1="50.5" x2="222.984375" x1="-222.984375" class="divider"/>
<g class="label">
<foreignObject height="0" width="0">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel"/>
</div>
</foreignObject>
<foreignObject transform="translate( -5.78125, -76)" height="18" width="11.5625" class="classTitle">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">R</span>
</div>
</foreignObject>
<foreignObject transform="translate( -215.484375, -42)" height="18" width="100.484375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-some_int : int</span>
</div>
</foreignObject>
<foreignObject transform="translate( -215.484375, -20)" height="18" width="158.3125">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-style: italic; display: inline-block; white-space: nowrap;">
<span style="font-style:italic;" class="nodeLabel">-some_int_pointer : int </span>
</div>
</foreignObject>
<foreignObject transform="translate( -215.484375, 2)" height="18" width="226.796875">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-style: italic; display: inline-block; white-space: nowrap;">
<span style="font-style:italic;" class="nodeLabel">-some_int_pointer_pointer : int *</span>
</div>
</foreignObject>
<foreignObject transform="translate( -215.484375, 24)" height="18" width="192.09375">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-some_int_reference : int &amp;</span>
</div>
</foreignObject>
<foreignObject transform="translate( -215.484375, 58)" height="18" width="430.96875">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">
<span class="nodeLabel">-R(int &amp; some_int, C &amp; cc, const E &amp; ee, F &amp;&amp; ff, I *&amp; ii) : void</span>
</div>
</foreignObject>
</g>
</g>
</a>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 31 KiB

Some files were not shown because too many files have changed in this diff Show More