Compare commits

...

531 Commits

Author SHA1 Message Date
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
815 changed files with 101524 additions and 19546 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.ClassMemberSuffix
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,8 +1,8 @@
compilation_database_dir: debug
output_directory: docs/diagrams
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: https://github.com/bkryza/clang-uml/blob/{{ git.commit }}/{{ element.source.path }}#L{{ element.source.line }}
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
@@ -14,9 +14,19 @@ diagrams:
include!: uml/common_model_class_diagram.yml
class_model_class:
include!: uml/class_model_class_diagram.yml
diagram_element_hierarchy_class:
include!: uml/diagram_element_hierarchy_diagram.yml
sequence_model_class:
include!: uml/sequence_model_class_diagram.yml
main_sequence:
include!: uml/main_sequence_diagram.yml
sequence_diagram_visitor_sequence:
include!: uml/sequence_diagram_visitor_sequence_diagram.yml
class_diagram_generator_sequence:
include!: uml/class_diagram_generator_sequence_diagram.yml
template_builder_sequence:
include!: uml/template_builder_sequence_diagram.yml
package_model_class:
include!: uml/package_model_class_diagram.yml
include_graph:
include!: uml/include_diagram.yml
include!: uml/include_diagram.yml

View File

@@ -1,31 +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
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 llvm-12 clang-12 libclang-12-dev libclang-cpp12-dev lcov zlib1g-dev
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" LLVM_VERSION=12 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

5
.gitignore vendored
View File

@@ -6,10 +6,11 @@ CMakeScripts
Testing
cmake_install.cmake
install_manifest.txt
compile_commands.json
/compile_commands.json
CTestTestfile.cmake
Session.vim
_deps
_tidy
/build/
lib/
bin/
@@ -18,6 +19,7 @@ bin/
/puml/
/debug/
/release/
/debug_tidy
/.cache
docs/diagrams
@@ -31,3 +33,4 @@ packaging/conda/meta.yaml
.idea/
cmake-build-
cmake-build-*
.run/

3
AUTHORS.md Normal file
View File

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

View File

@@ -1,8 +1,71 @@
# CHANGELOG
###
### 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

@@ -3,29 +3,57 @@ cmake_minimum_required(VERSION 3.12)
#
# Project name
#
project(clang-uml)
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_CXX_STANDARD 17)
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)
#
# 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)
#
# CMake build options
#
option(LINK_LLVM_SHARED "Should LLVM be linked using shared libraries or statically" ON)
set(LLVM_VERSION CACHE STRING "Path to custom llvm-config executable")
set(GIT_VERSION "0.1.0" CACHE STRING "clang-uml version")
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)")
#
# Setup version string
#
include(GitVersion)
setup_git_version()
message(STATUS "clang-uml version: "
"${GIT_VERSION_MAJOR}.${GIT_VERSION_MINOR}.${GIT_VERSION_PATCH}")
#
# Setup LLVM
@@ -46,6 +74,12 @@ 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)
@@ -56,6 +90,7 @@ else(LINK_LLVM_SHARED)
clangDriver
clangParse
clangSema
clangSupport
clangAnalysis
clangAST
clangBasic
@@ -75,8 +110,28 @@ else(LINK_LLVM_SHARED)
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 threads library
#
@@ -87,50 +142,49 @@ find_package(Threads REQUIRED)
#
message(STATUS "Checking for yaml-cpp...")
if(APPLE)
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} /usr/local/include/yaml-cpp)
find_library(YAML_CPP_LIBRARY
NAMES yaml-cpp
PATHS ${YAML_CPP_LIBRARIES} /usr/local/lib)
set(YAML_CPP_LIBRARY_DIR /usr/local/lib)
endif()
else(APPLE)
find_package(yaml-cpp REQUIRED)
endif(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -std=c++17 -Wno-unused-parameter -Wno-unused-private-field")
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/)
#
# Configure clang-uml executable version
#
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/src/version)
configure_file(src/version.h.in ${PROJECT_BINARY_DIR}/src/version/version.h)
#
# Handle various compiler quirks
#
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}")
endif()
message(STATUS "Using CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
#
# Setup include directories
#
@@ -142,43 +196,13 @@ include_directories(${THIRDPARTY_HEADERS_DIR})
include_directories(${PROJECT_SOURCE_DIR}/src/)
include_directories(${PROJECT_BINARY_DIR}/src/version)
#
# Generate source list dynamically
#
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})
#
# Define library target for linking with test cases and output executable
#
add_library(clang-umllib OBJECT ${SOURCES})
#
# Define the target executable clang-uml
#
add_executable(clang-uml ${MAIN_SOURCE_FILE})
target_link_libraries(clang-uml
${YAML_CPP_LIBRARIES}
${LIBTOOLING_LIBS}
clang-umllib
Threads::Threads)
target_compile_features(clang-uml PRIVATE cxx_std_17)
#
# Setup install options
#
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})
add_subdirectory(src)
#
# Enable testing via CTest
#
enable_testing()
add_subdirectory(tests)
option(BUILD_TESTS "" ON)
if(BUILD_TESTS)
enable_testing()
add_subdirectory(tests)
endif(BUILD_TESTS)

91
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,91 @@
# 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 over camels
* use `make format` before submitting PR to ensure consistent formatting
* 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!

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,28 @@
.DEFAULT_GOAL := debug
NUMPROC ?= $(shell nproc)
OS_UNAME := $(shell uname -s)
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)
.PHONY: clean
clean:
rm -rf debug release
rm -rf debug release debug_tidy
debug/CMakeLists.txt:
cmake -S . -B debug \
@@ -48,12 +59,26 @@ release/CMakeLists.txt:
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS="$(CMAKE_CXX_FLAGS)" \
-DCMAKE_EXE_LINKER_FLAGS="$(CMAKE_EXE_LINKER_FLAGS)" \
-DLLVM_VERSION=${LLVM_VERSION}
-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)
@@ -72,8 +97,8 @@ document_test_cases: test_plantuml
clanguml_diagrams: debug
mkdir -p docs/diagrams
debug/clang-uml
plantuml -tsvg docs/diagrams/*.puml
debug/src/clang-uml -g plantuml -g json
plantuml -tsvg -nometadata docs/diagrams/*.puml
python3 util/format_svg.py docs/diagrams/*.svg
.PHONY: submodules
@@ -89,14 +114,32 @@ 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: 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"

285
README.md
View File

@@ -1,113 +1,92 @@
# clang-uml - C++ UML diagram generator based on Clang and PlantUML
[<div align="center"><img width="600" src="https://raw.githubusercontent.com/bkryza/clang-uml/add-logo/docs/img/clang-uml-logo.svg?sanitize=true"></div>](https://github.com/bkryza/clang-uml/releases)
# C++ UML diagram generator based on Clang
[![Build status](https://github.com/bkryza/clang-uml/actions/workflows/build.yml/badge.svg)](https://github.com/bkryza/clang-uml/actions)
[![Coverage](https://codecov.io/gh/bkryza/clang-uml/branch/master/graph/badge.svg)](https://codecov.io/gh/bkryza/clang-uml)
[![Version](https://img.shields.io/badge/version-0.1.0-blue)](https://github.com/bkryza/clang-uml/releases)
[![Version](https://img.shields.io/badge/version-0.3.7-blue)](https://github.com/bkryza/clang-uml/releases)
[![Version](https://img.shields.io/badge/LLVM-12,13,14,15,16-orange)](https://github.com/bkryza/clang-uml/releases)
`clang-uml` is an automatic C++ to [PlantUML](https://plantuml.com) class, sequence
and package diagram generator, driven by YAML configuration files. The main idea behind the
`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
type and contents of each generated diagram.
types and contents of each generated diagram.
The diagrams can be generated in [PlantUML](https://plantuml.com) and JSON formats.
`clang-uml` currently supports C++ up to version 17.
`clang-uml` currently supports C++ up to version 17 with partial support for C++ 20.
> Current `master` version (and any release since `0.2.0`) has been refactored to use
> [Clang LibTooling](https://clang.llvm.org/docs/LibTooling.html) instead of libclang.
> Previous version is available in branch `0.1.x`, however it is not maintained.
Full documentation can be found [here](./docs/README.md).
## Features
Main features supported so far include:
* **Class diagram generation**
* Basic class properties and methods including visibility
* Class relationships including associations, aggregations, dependencies and friendship
* Template instantiation relationships
* Relationship inference from C++ containers and smart pointers
* Diagram content filtering based on namespaces, elements and relationships
* Optional package generation from namespaces
* Interactive links to online code to classes, methods and class fields in SVG diagrams
* Class properties and methods including access - [_example_](docs/test_cases/t00003.md)
* Class inheritance - [_example_](docs/test_cases/t00002.md)
* Other class relationships including associations, aggregations, dependencies and friendship - [_example_](docs/test_cases/t00006.md)
* Template instantiation relationships - [_example_](docs/test_cases/t00014.md)
* Template specialization and instantiation based on deduced context - [_example_](docs/test_cases/t00062.md)
* Relationship inference from C++ containers and smart pointers - [_example_](docs/test_cases/t00007.md)
* Diagram content filtering based on namespaces, elements and relationships - [_example_](docs/test_cases/t00040.md)
* Optional package generation from namespaces - [_example_](docs/test_cases/t00036.md)
* Optional package generation from subdirectories - [_example_](docs/test_cases/t00065.md)
* Interactive links to online code to classes, methods and class fields in SVG diagrams - [_example_](https://raw.githubusercontent.com/bkryza/clang-uml/master/docs/test_cases/t00002_class.svg)
* Support for plain C99/C11 code (struct and units relationships) - [_example_](docs/test_cases/t00057.md)
* C++20 concept constraints - [_example_](docs/test_cases/t00059.md)
* **Sequence diagram generation**
* Generation of sequence diagram from one code location to another (currently only for non-template code)
* Generation of sequence diagram from specific method or function - [_example_](docs/test_cases/t00002.md)
* Generation of loop and conditional statements - [_example_](docs/test_cases/t20021.md)
* Generation of switch statements - [_example_](docs/test_cases/t20024.md)
* Generation of try/catch blocks - [_example_](docs/test_cases/t20023.md)
* Handling of template code including constexpr conditionals - [_example_](docs/test_cases/t20018.md)
* Handling of lambda expressions - [_example_](docs/test_cases/t20012.md)
* Interactive links to online code to classes and call expressions - [_example_](https://raw.githubusercontent.com/bkryza/clang-uml/master/docs/test_cases/t20021_sequence.svg)
* **Package diagram generation**
* Generation of package diagram based on C++ namespaces
* Interactive links to online code to packages
* Generation of package diagram based on C++ namespaces - [_example_](docs/test_cases/t30001.md)
* Generation of package diagram based on subdirectories - [_example_](docs/test_cases/t30010.md)
* Dependencies between packages based on symbols used in the code - [_example_](docs/test_cases/t30002.md)
* Interactive links to online code to packages - [_example_](https://raw.githubusercontent.com/bkryza/clang-uml/master/docs/test_cases/t30002_package.svg)
* **Include graph diagram generation**
* Show include graph for selected files
* Show include graph for selected files - [_example_](docs/test_cases/t40001.md)
To see what `clang-uml` can do so far, checkout the diagrams generated for unit test cases [here](./docs/test_cases.md)
and examples in [clang-uml-examples](https://github.com/bkryza/clang-uml-examples) repository.
To see what `clang-uml` can do, checkout the diagrams generated for unit
test cases [here](./docs/test_cases.md) and examples in
[clang-uml-examples](https://github.com/bkryza/clang-uml-examples) repository.
More comprehensive documentation can be found [here](./docs/README.md).
## Installation
### Distribution packages
#### Ubuntu
```bash
sudo add-apt-repository ppa:bkryza/clang-uml
sudo apt update
sudo apt install clang-uml
```
#### Conda
```bash
conda config --add channels conda-forge
conda config --set channel_priority strict
conda install -c bkryza/label/clang-uml clang-uml
```
### Building from source
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
# macos
brew install ccache cmake llvm yaml-cpp
```
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/clang-uml --help
# To build using a specific installed version of LLVM use:
LLVM_VERSION=14 make release
# Optionally
make install
# or
export PATH=$PATH:$PWD/release
# On macos, it is necessary to build clang-uml using the same llvm against which it is linked, e.g.
export CC=/usr/local/opt/llvm/bin/clang
export CCX=/usr/local/opt/llvm/bin/clang++
LLVM_VERSION=14 make release
```
Installation instructions for `Linux`, `macos` and `Windows` can be found
[here](./docs/installation.md).
## Usage
### Generating compile commands database
`clang-uml` requires an up-to-date
[compile_commands.json](https://clang.llvm.org/docs/JSONCompilationDatabase.html)
file, containing the list of commands used for compiling the source code.
Nowadays, this file can be generated rather easily using multiple methods:
* For [CMake](https://cmake.org/) projects, simply invoke the `cmake` command
as `cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ...`
* For Make projects checkout [compiledb](https://github.com/nickdiego/compiledb) or [Bear](https://github.com/rizsotto/Bear)
* For Boost-based projects try [commands_to_compilation_database](https://github.com/tee3/commands_to_compilation_database)
* For SCons, invoke `compilation_db` tool (requires SCons > 4.0.0)
* For [CMake](https://cmake.org/) projects, simply invoke the `cmake` command
as `cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ...`
* For Make projects checkout [compiledb](https://github.com/nickdiego/compiledb)
or [Bear](https://github.com/rizsotto/Bear)
* For Boost-based projects
try [commands_to_compilation_database](https://github.com/tee3/commands_to_compilation_database)
* For SCons, invoke `compilation_db` tool (requires SCons > 4.0.0)
* For Microsoft Visual Studio projects try [Clang Power Tools](https://www.clangpowertools.com)
### Invocation
By default, `config-uml` will assume that the configuration file `.clang-uml`
and compilation database `compile_commands.json` files are in the
current directory, so if they are in the top level directory of a project,
simply run:
```bash
clang-uml
```
@@ -116,6 +95,7 @@ The output path for diagrams, as well as alternative location of
compilation database can be specified in `.clang-uml` configuration file.
For other options checkout help:
```bash
clang-uml --help
```
@@ -149,6 +129,7 @@ diagrams:
See [here](docs/configuration_file.md) for detailed configuration file reference guide.
## Examples
To see what `clang-uml` can do, checkout the test cases documentation [here](./docs/test_cases.md).
In order to see diagrams for the `clang-uml` itself, based on its own [config](.clang-uml) run
@@ -164,7 +145,7 @@ and checkout the SVG diagrams in `docs/diagrams` folder.
#### Example
Source code:
The following C++ code:
```cpp
template <typename T, typename P> struct A {
@@ -185,6 +166,7 @@ using PairPairBA = std::pair<std::pair<B, A<long, T>>, long>;
template <class T> using VectorPtr = std::unique_ptr<std::vector<T>>;
template <class T> using APtr = std::unique_ptr<A<double, T>>;
template <class T> using ASharedPtr = std::shared_ptr<A<double, T>>;
template <class T, class U>
using AAPtr = std::unique_ptr<std::pair<A<double, T>, A<long, U>>>;
@@ -197,11 +179,13 @@ using BVector2 = BVector;
using AIntString = AString<int>;
using ACharString = AString<char>;
using AWCharString = AString<wchar_t>;
using AStringString = AString<std::string>;
using BStringString = AStringString;
class R {
template <typename T> class R {
using AWCharString = AString<wchar_t>;
PairPairBA<bool> bapair;
APtr<bool> abool;
@@ -212,6 +196,7 @@ class R {
AIntString intstring;
AStringString stringstring;
BStringString bstringstring;
AAPtr<T, float> atfloat;
protected:
BVector bs;
@@ -239,73 +224,72 @@ generates the following diagram (via PlantUML):
The following C++ code:
```cpp
#include <algorithm>
#include <numeric>
#include <vector>
#include <atomic>
#include <functional>
#include <iostream>
#include <memory>
#include <string>
namespace clanguml {
namespace t20001 {
namespace t20029 {
std::string encode_b64(std::string &&content) { return std::move(content); }
namespace detail {
struct C {
auto add(int x, int y) { return x + y; }
};
}
class A {
template <typename T> class Encoder : public T {
public:
A() {}
int add(int x, int y) { return m_c.add(x, y); }
int add3(int x, int y, int z)
bool send(std::string &&msg)
{
std::vector<int> v;
v.push_back(x);
v.push_back(y);
v.push_back(z);
auto res = add(v[0], v[1]) + v[2];
log_result(res);
return res;
return T::send(std::move(encode(std::move(msg))));
}
void log_result(int r) {}
private:
detail::C m_c{};
protected:
std::string encode(std::string &&msg) { return encode_b64(std::move(msg)); }
};
class B {
template <typename T> class Retrier : public T {
public:
B(A &a)
: m_a{a}
bool send(std::string &&msg)
{
std::string buffer{std::move(msg)};
int retryCount = 5;
while (retryCount--) {
if (T::send(buffer))
return true;
}
return false;
}
};
class ConnectionPool {
public:
void connect()
{
if (!is_connected_.load())
connect_impl();
}
int wrap_add(int x, int y)
{
auto res = m_a.add(x, y);
m_a.log_result(res);
return res;
}
int wrap_add3(int x, int y, int z)
{
auto res = m_a.add3(x, y, z);
m_a.log_result(res);
return res;
}
bool send(const std::string &msg) { return true; }
private:
A &m_a;
void connect_impl() { is_connected_ = true; }
std::atomic<bool> is_connected_;
};
int tmain()
{
A a;
B b(a);
auto pool = std::make_shared<Encoder<Retrier<ConnectionPool>>>();
return b.wrap_add3(1, 2, 3);
pool->connect();
for (std::string line; std::getline(std::cin, line);) {
if (!pool->send(std::move(line)))
break;
}
return 0;
}
}
}
@@ -313,7 +297,7 @@ int tmain()
generates the following diagram (via PlantUML):
![sequence_diagram_example](docs/test_cases/t20001_sequence.svg)
![sequence_diagram_example](docs/test_cases/t20029_sequence.svg)
### Package diagrams
@@ -399,6 +383,7 @@ generates the following diagram (via PlantUML) based on include directives in th
| Include (system) | ![dependency](docs/img/puml_dependency.png) |
### Diagram content filtering
For typical code bases, generating a single diagram from entire code or even a single namespace can be too big to
be useful, e.g. as part of documentation. `clang-uml` allows specifying content to be included and excluded from
each diagram using simple YAML configuration:
@@ -436,43 +421,29 @@ exclude:
- clanguml::common::ClassF
```
### Comment decorators
`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.
The following decorators are currently supported:
- [note](docs/test_cases/t00028.md) - add a PlantUML note to a C++ entity
- [skip](docs/test_cases/t00029.md) - skip the underlying C++ entity
- [skiprelationship](docs/test_cases/t00029.md) - skip only relationship generation for a class property
- [composition](docs/test_cases/t00030.md) - document the property as composition
- [association](docs/test_cases/t00030.md) - document the property as association
- [aggregation](docs/test_cases/t00030.md) - document the property as aggregation
- [style](docs/test_cases/t00031.md) - add PlantUML style to a C++ entity
### Doxygen integration
`clang-uml` decorstors can be omitted completely in [Doxygen](https://www.doxygen.nl/index.html), by adding the following
lines to the Doxygen config file:
```
ALIASES += clanguml=""
ALIASES += clanguml{1}=""
ALIASES += clanguml{2}=""
ALIASES += clanguml{3}=""
```
More details on this can be found in the [diagram filters](./docs/diagram_filters.md) documentation section.
### Test cases
The build-in test cases used for unit testing of the `clang-uml`, can be browsed [here](./docs/test_cases.md).
## Acknowledgements
This project relies on the following great tools:
* [Clang LibTooling](https://clang.llvm.org/docs/LibTooling.html) - a C++ library for creating tools based on Clang
* [PlantUML](https://plantuml.com/) - language and diagram for generating UML diagrams
* [Catch2](https://github.com/catchorg/Catch2) - C++ unit test framework
* [glob](https://github.com/p-ranav/glob) - Unix style path expansion for C++
* [CLI11](https://github.com/CLIUtils/CLI11) - command line parser for C++
* [inja](https://github.com/pantor/inja) - a template engine for modern C++
* [Clang LibTooling](https://clang.llvm.org/docs/LibTooling.html) - a C++ library for creating tools based on Clang
* [PlantUML](https://plantuml.com/) - language and diagram for generating UML diagrams
* [Catch2](https://github.com/catchorg/Catch2) - C++ unit test framework
* [glob](https://github.com/p-ranav/glob) - Unix style path expansion for C++
* [CLI11](https://github.com/CLIUtils/CLI11) - command line parser for C++
* [inja](https://github.com/pantor/inja) - a template engine for modern C++
* [backward-cpp](https://github.com/bombela/backward-cpp) - stack trace pretty printer for C++
* [yaml-cpp](https://github.com/jbeder/yaml-cpp) - YAML parser library for C++
* [spdlog](https://github.com/gabime/spdlog) - Fast C++ logging library
## Contributing
If you would like to contribute to the project, please check out [contributing guidelines](./CONTRIBUTING.md).
## LICENSE

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 ..

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()

39
docs/Makefile Normal file
View File

@@ -0,0 +1,39 @@
# 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) 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

20
docs/README.md Normal file
View File

@@ -0,0 +1,20 @@
# 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)

185
docs/class_diagrams.md Normal file
View File

@@ -0,0 +1,185 @@
# 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: puml
# 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;
};
```
generates 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
In many cases, dependency relationships between classes can clutter the diagram too much, for instance consider this
diagram:
![t00019_class](test_cases/t00019_class.svg)
where the dependency relationships do not bring much information into the diagram. In such cases it might
be useful to disable dependency relationships for this diagram completely using the following exclusion filter:
```yaml
exclude:
relationships:
- dependency
```
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. In the future there might
be an option to remove the redundant dependency relationships from the diagram automatically.

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;
};
```
generates 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;
};
```
generates 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;
};
```
generates 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;
};
```
generates the following diagram:
![skip](./test_cases/t00031_class.svg)

187
docs/common_options.md Normal file
View File

@@ -0,0 +1,187 @@
# Common diagram generation options
<!-- toc -->
* [Overall configuration file structure](#overall-configuration-file-structure)
* [Translation unit glob patterns](#translation-unit-glob-patterns)
* [PlantUML custom directives](#plantuml-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
```
## 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 much 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.
## PlantUML custom directives
In case it's necessary to add some custom PlantUML declarations before or after the generated diagram content,
it can be achieved simply using the `plantuml` configuration properties, for instance:
```yaml
plantuml:
before:
- left to right direction
after:
- note left of {{ 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 PlantUML [documentation](https://plantuml.com/).
## 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 than the Clang version, which `clang-uml` uses on your platform,
include paths specified in the generated `compile_commands.json` can be incorrect.
> 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 ugly error messages on the screen 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` contain 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 providing `add_compile_flags` and `remove_compile_flags` in the
configuration file, or providing `--add-compile-flag` and `--remove-compile-flag`
in 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
@@ -37,27 +55,20 @@
* `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
## 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 +88,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 +114,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 +138,32 @@ diagrams:
# Add this line to the beginning of the resulting puml file
before:
- 'title clang-uml class diagram model'
```
```
## 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

270
docs/diagram_filters.md Normal file
View File

@@ -0,0 +1,270 @@
# Diagram filters
<!-- toc -->
* [`namespaces` _[string or regex]_](#namespaces-_string-or-regex_)
* [`elements` _[string or regex]_](#elements-_string-or-regex_)
* [`element_types`](#element_types)
* [`paths` _[string or glob]_](#paths-_string-or-glob_)
* [`context` _[string or regex]_](#context-_string-or-regex_)
* [`relationships`](#relationships)
* [`subclasses` _[string or regex]_](#subclasses-_string-or-regex_)
* [`parents` _[string or regex]_](#parents-_string-or-regex_)
* [`specializations` _[string or regex]_](#specializations-_string-or-regex_)
* [`access`](#access)
* [`method_types`](#method_types)
* [`dependants` and `dependencies` _[string or regex]_](#dependants-and-dependencies-_string-or-regex_)
<!-- 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` <br/>- `r: '.*detail.*'` |
| `elements` | Qualified name or regex | - `ns1::ns2::ClassA` <br/>- `r: '.*detail.*'` |
| `element_types` | Types of diagram elements | - `class`<br/>- `enum`<br/>- `concept` |
| `paths` | File or dir path or glob pattern | - `src/dir1`<br/>- `src/dir2/a.cpp`<br/>- `src/dir3/*.cpp` |
| `context` | Qualified name or regex | - `ns1::ns2::ClassA`<br/>- `r: 'ns1::ns2::ClassA.+'` |
| `relationships` | Type of relationship | - `inheritance`<br/>- `composition`<br/>- `aggregation`<br/>- `ownership`<br/>- `association`<br/>- `instantiation`<br/>- `friendship`<br/>- `dependency` |
| `subclasses` | Qualified name or regex | - `ns1::ns2::ClassA`<br/>- `r: 'ns1::ns2::ClassA.+'` |
| `parents` | Qualified name or regex | - `ns1::ns2::ClassA`<br/>- `r: 'ns1::ns2::ClassA.+'` |
| `specializations` | Qualified name or regex | - `ns1::ns2::ClassA`<br/>- `r: 'ns1::ns2::ClassA.+'` |
| `access` | Method or member access scope | - `public`<br/>- `protected`<br/>- `private` |
| `method_types` | Type of class method | - `constructor`<br/>- `destructor`<br/>- `assignment`<br/>- `operator`<br/>- `defaulted`<br/>- `deleted`<br/>- `static` |
| `dependants` | Qualified name or regex | - `ns1::ns2::ClassA`<br/>- `r: 'ns1::ns2::ClassA.+'` |
| `dependencies` | Qualified name or regex | - `ns1::ns2::ClassA`<br/>- `r: 'ns1::ns2::ClassA.+'` |
The following filters are available.
## `namespaces` _[string or regex]_
Allows to include or exclude entities from specific namespaces.
## `elements` _[string or regex]_
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` _[string or glob]_
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` _[string or regex]_
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` _[string or regex]_
This filter allows to include or exclude all subclasses of a given class in the diagram.
## `parents` _[string or regex]_
This filter allows to include or exclude all parents (base classes) of a given class in the diagram.
## `specializations` _[string or regex]_
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`).
## `dependants` and `dependencies` _[string or regex]_
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
```
generates 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 its 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

View File

@@ -0,0 +1,20 @@
# 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.
`clang-uml` decorators can be omitted completely in Doxygen, by adding the
following lines to the Doxygen config file:
```
ALIASES += uml=""
ALIASES += uml{1}=""
ALIASES += uml{2}=""
ALIASES += uml{3}=""
```

22
docs/generator_types.md Normal file
View File

@@ -0,0 +1,22 @@
# Generator types
<!-- toc -->
* [PlantUML](#plantuml)
* [JSON](#json)
<!-- tocstop -->
Currently, there are 2 types of diagram generators: `plantuml` and `json`.
## PlantUML
Generates UML diagrams in textual PlantUML format, which can then
be converted to various image formats.
## JSON
Generates a JSON representation of the intermediate `clang-uml` model, which
can be used for scripting, integrations as well as analysing the code base
or even generating diagrams in other formats.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

64
docs/include_diagrams.md Normal file
View File

@@ -0,0 +1,64 @@
# Generating include diagrams
<!-- toc -->
* [Tracking system headers directly included by projects files](#tracking-system-headers-directly-included-by-projects-files)
<!-- 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: puml
# 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 projects files
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.

168
docs/installation.md Normal file
View File

@@ -0,0 +1,168 @@
# 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)
<!-- tocstop -->
### Distribution packages
#### Ubuntu
```bash
# Currently supported Ubuntu versions are Focal, Jammy and Kinetic
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.3.1/clang-uml-0.3.1-1.fc36.x86_64.rpm
sudo dnf install ./clang-uml-0.3.1-1.fc36.x86_64.rpm
# Fedora 37
wget https://github.com/bkryza/clang-uml/releases/download/0.3.1/clang-uml-0.3.1-1.fc37.x86_64.rpm
sudo dnf install ./clang-uml-0.3.1-1.fc37.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
make install
# or
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.3.1
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
```

View File

@@ -0,0 +1,21 @@
# 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 of 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

168
docs/package_diagrams.md Normal file
View File

@@ -0,0 +1,168 @@
# Generating package diagrams
<!-- toc -->
<!-- tocstop -->
Package diagrams are simple diagrams which can be useful to determine the high level structure of a C++ project,
by rendering all projects namespaces 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: puml
# 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:
```
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 {};
}
}
```
generates 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)

62
docs/quick_start.md Normal file
View File

@@ -0,0 +1,62 @@
# 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: puml
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
```
4. Generate SVG images from the PlantUML diagrams:
```bash
$ plantuml -tsvg puml/*.puml
```
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
```

246
docs/sequence_diagrams.md Normal file
View File

@@ -0,0 +1,246 @@
# Generating sequence diagrams
<!-- toc -->
* [Sequence diagram overview](#sequence-diagram-overview)
* [Specifying diagram entry point](#specifying-diagram-entry-point)
* [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)
<!-- 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: puml
# 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 entry point
Sequence diagrams require an entry point for the diagram in order to determine, at which point in the code the sequence
diagram should start. Currently, the entry point can only be a method or a free function, both specified using `start_from`
configuration property, for instance:
```yaml
start_from:
- function: "main(int,char**)"
```
or
```yaml
start_from:
- function: "clanguml::sequence_diagram::visitor::translation_unit_visitor::VisitCXXRecordDecl(clang::CXXRecordDecl *)"
```
The entrypoints must be fully qualified and they must match exactly the string representation of given function or
method in the `clang-uml` model, which can be frustrating after few attempts.
If not sure, the best way is to put anything in the `function`
property value at first, run the `clang-uml` on the diagram with verbose set to `-vvv` and look in the logs
for the relevant function signature. At the end of the diagram generation at this verbosity level, `clang-uml` will
generate a textual representation of all discovered activities relevant for this diagram, for instance if you're looking
_for exact signature of method `translation_unit_visitor::VisitCXXRecordDecl`, look for similar_
output in the logs:
```bash
[trace] [tid 3842954] [diagram.cc:194] Sequence id=1875210076312968845:
[trace] [tid 3842954] [diagram.cc:198] Activity id=1875210076312968845, from=clanguml::sequence_diagram::visitor::translation_unit_visitor::VisitCXXRecordDecl(clang::CXXRecordDecl *):
[trace] [tid 3842954] [diagram.cc:208] Message from=clanguml::sequence_diagram::visitor::translation_unit_visitor::VisitCXXRecordDecl(clang::CXXRecordDecl *), from_id=1875210076312968845, to=__UNRESOLVABLE_ID__, to_id=0, name=, type=if
[trace] [tid 3842954] [diagram.cc:217] Message from=clanguml::sequence_diagram::visitor::translation_unit_visitor::VisitCXXRecordDecl(clang::CXXRecordDecl *), from_id=1875210076312968845, to=clanguml::sequence_diagram::visitor::translation_unit_visitor::should_include(const clang::TagDecl *), to_id=664596622746486441, name=should_include, type=call
```
Then you just need to copy and paste the signature exactly and rerun `clang-uml`.
## 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 be generated at the point where lambda is passed as parameter
* If the lambda is passed as template parameter in instantiation it will not be generated at the moment at all
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); });
}
}
}
```
generates 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: puml
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 &&)
```

View File

@@ -1,7 +1,7 @@
# Test cases index
## 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
@@ -47,9 +47,55 @@
* [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
## Package diagrams
* [t30001](./test_cases/t30001.md) - Basic package diagram test case
* [t30002](./test_cases/t30002.md) - Package dependency test case
@@ -59,6 +105,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:562px;height:362px;" version="1.1" viewBox="0 0 562 362" width="562px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1e4izffzgdypx" width="300%" x="-1" y="-1">
<filter height="300%" id="f1d556pv29koyc" 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,89 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00002/t00002.cc#L7" target="_top" title="This is class A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00002/t00002.cc#L7" xlink:show="new" xlink:title="This is class A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1e4izffzgdypx)" height="73.6094" id="C_0000987634239855407298" style="stroke: #A80036; stroke-width: 1.5;" width="125" x="294" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00002/t00002.cc#L7" target="_top" title="This is class A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00002/t00002.cc#L7" xlink:show="new" xlink:title="This is class A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1d556pv29koyc)" height="73.6094" id="C_0000987634239855407298" 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"/>
<ellipse cx="305" cy="59" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<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>
<ellipse cx="305" cy="71.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<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>
<ellipse cx="305" cy="51" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="99" x="314" y="54.2104">foo_a() = 0 : void</text>
<ellipse cx="305" cy="63.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="98" x="314" y="67.0151">foo_c() = 0 : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="295" x2="418" y1="73.6094" y2="73.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00002/t00002.cc#L16" target="_top" title="This is class B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00002/t00002.cc#L16" xlink:show="new" xlink:title="This is class B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1e4izffzgdypx)" height="60.8047" id="C_0000594234458687375950" style="stroke: #A80036; stroke-width: 1.5;" width="100" x="69.5" y="143"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00002/t00002.cc#L16" target="_top" title="This is class B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00002/t00002.cc#L16" xlink:show="new" xlink:title="This is class B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1d556pv29koyc)" height="60.8047" id="C_0000594234458687375950" style="stroke: #A80036; stroke-width: 1.5;" width="100" x="69.5" y="143"/>
<ellipse cx="111.5" cy="159" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M114.4688,164.6406 Q113.8906,164.9375 113.25,165.0781 Q112.6094,165.2344 111.9063,165.2344 Q109.4063,165.2344 108.0781,163.5938 Q106.7656,161.9375 106.7656,158.8125 Q106.7656,155.6875 108.0781,154.0313 Q109.4063,152.375 111.9063,152.375 Q112.6094,152.375 113.25,152.5313 Q113.9063,152.6875 114.4688,152.9844 L114.4688,155.7031 Q113.8438,155.125 113.25,154.8594 Q112.6563,154.5781 112.0313,154.5781 Q110.6875,154.5781 110,155.6563 Q109.3125,156.7188 109.3125,158.8125 Q109.3125,160.9063 110,161.9844 Q110.6875,163.0469 112.0313,163.0469 Q112.6563,163.0469 113.25,162.7813 Q113.8438,162.5 114.4688,161.9219 L114.4688,164.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="131.5" y="163.1543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="70.5" x2="168.5" y1="175" y2="175"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="70.5" x2="168.5" y1="183" y2="183"/>
<ellipse cx="80.5" cy="194" 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="74" x="89.5" y="197.2104">foo_a() : void</text>
<ellipse cx="80.5" cy="186" 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="74" x="89.5" y="189.2104">foo_a() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="70.5" x2="168.5" y1="195.8047" y2="195.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/993726299647bf4dab2ef054bb756539c4f18ffe/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(#f1e4izffzgdypx)" height="60.8047" id="C_0001142499429598587507" style="stroke: #A80036; stroke-width: 1.5;" width="99" x="307" y="143"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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(#f1d556pv29koyc)" height="60.8047" id="C_0001142499429598587507" 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"/>
<ellipse cx="318" cy="194" 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="73" x="327" y="197.2104">foo_c() : void</text>
<ellipse cx="318" cy="186" 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="73" x="327" y="189.2104">foo_c() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="308" x2="405" y1="195.8047" y2="195.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/993726299647bf4dab2ef054bb756539c4f18ffe/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(#f1e4izffzgdypx)" height="86.4141" id="C_0000060950494980414724" style="stroke: #A80036; stroke-width: 1.5;" width="148" x="33.5" y="265"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00002/t00002.cc#L36" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00002/t00002.cc#L36" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1d556pv29koyc)" height="86.4141" id="C_0000060950494980414724" style="stroke: #A80036; stroke-width: 1.5;" width="148" x="33.5" y="265"/>
<ellipse cx="98.75" cy="281" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M101.7188,286.6406 Q101.1406,286.9375 100.5,287.0781 Q99.8594,287.2344 99.1563,287.2344 Q96.6563,287.2344 95.3281,285.5938 Q94.0156,283.9375 94.0156,280.8125 Q94.0156,277.6875 95.3281,276.0313 Q96.6563,274.375 99.1563,274.375 Q99.8594,274.375 100.5,274.5313 Q101.1563,274.6875 101.7188,274.9844 L101.7188,277.7031 Q101.0938,277.125 100.5,276.8594 Q99.9063,276.5781 99.2813,276.5781 Q97.9375,276.5781 97.25,277.6563 Q96.5625,278.7188 96.5625,280.8125 Q96.5625,282.9063 97.25,283.9844 Q97.9375,285.0469 99.2813,285.0469 Q99.9063,285.0469 100.5,284.7813 Q101.0938,284.5 101.7188,283.9219 L101.7188,286.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="119.25" y="285.1543">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="34.5" x2="180.5" y1="297" y2="297"/>
<ellipse cx="44.5" cy="308" 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="74" x="53.5" y="311.2104">foo_a() : void</text>
<ellipse cx="44.5" cy="320.8047" 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="73" x="53.5" y="324.0151">foo_c() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="34.5" x2="180.5" y1="330.6094" y2="330.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00002/t00002.cc#L58" target="_top" title="All the A pointers" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00002/t00002.cc#L58" xlink:show="new" xlink:title="All the A pointers" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="39.5" y="303"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="41.5" y="305"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00002/t00002.cc#L58" target="_top" title="as" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="336.6094"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="41.5" y="338.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00002/t00002.cc#L58" target="_top" title="All the A pointers" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00002/t00002.cc#L58" xlink:show="new" xlink:title="All the A pointers" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="122" x="53.5" y="311.2104">as : std::vector&lt;A *&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00002/t00002.cc#L58" target="_top" title="as" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="344.8198">as : std::vector&lt;A *&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="34.5" x2="180.5" y1="317.8047" y2="317.8047"/>
<ellipse cx="44.5" cy="328.8047" 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="74" x="53.5" y="332.0151">foo_a() : void</text>
<ellipse cx="44.5" cy="341.6094" 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="73" x="53.5" y="344.8198">foo_c() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00002/t00002.cc#L61" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00002/t00002.cc#L61" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1e4izffzgdypx)" height="86.4141" id="C_0002237886670308966220" style="stroke: #A80036; stroke-width: 1.5;" width="148" x="403.5" y="265"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00002/t00002.cc#L61" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00002/t00002.cc#L61" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1d556pv29koyc)" height="86.4141" id="C_0002237886670308966220" style="stroke: #A80036; stroke-width: 1.5;" width="148" x="403.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="404.5" x2="550.5" y1="297" y2="297"/>
<ellipse cx="414.5" cy="308" 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="74" x="423.5" y="311.2104">foo_a() : void</text>
<ellipse cx="414.5" cy="320.8047" 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="73" x="423.5" y="324.0151">foo_c() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="404.5" x2="550.5" y1="330.6094" y2="330.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00002/t00002.cc#L83" target="_top" title="All the A pointers" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00002/t00002.cc#L83" xlink:show="new" xlink:title="All the A pointers" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="409.5" y="303"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="411.5" y="305"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00002/t00002.cc#L83" target="_top" title="as" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="336.6094"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="411.5" y="338.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00002/t00002.cc#L83" target="_top" title="All the A pointers" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00002/t00002.cc#L83" xlink:show="new" xlink:title="All the A pointers" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="122" x="423.5" y="311.2104">as : std::vector&lt;A *&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00002/t00002.cc#L83" target="_top" title="as" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="344.8198">as : std::vector&lt;A *&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="404.5" x2="550.5" y1="317.8047" y2="317.8047"/>
<ellipse cx="414.5" cy="328.8047" 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="74" x="423.5" y="332.0151">foo_a() : void</text>
<ellipse cx="414.5" cy="341.6094" 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="73" x="423.5" y="344.8198">foo_c() : void</text>
<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(#f1e4izffzgdypx)" style="stroke: #A80036; stroke-width: 1.0;"/>
<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(#f1d556pv29koyc)" 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 L61.94,57.6328 L105.69,142.88 L69.94,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(#f1e4izffzgdypx)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M6,32.5 L6,57.6328 A0,0 0 0 0 6,57.6328 L61.94,57.6328 L105.69,142.88 L69.94,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(#f1d556pv29koyc)" 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="M217,280.5 L217,304 L181.57,308 L217,312 L217,335.8984 A0,0 0 0 0 217,335.8984 L368,335.8984 A0,0 0 0 0 368,335.8984 L368,290.5 L358,280.5 L217,280.5 A0,0 0 0 0 217,280.5 " fill="#FBFB77" filter="url(#f1e4izffzgdypx)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M358,280.5 L358,290.5 L368,290.5 L358,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="223" y="297.5669">This is class D</text>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="130" x="223" 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="223" y="327.8325">and a little like C</text>
<path d="M217,265 L217,304 L181.57,308 L217,312 L217,350.6641 A0,0 0 0 0 217,350.6641 L368,350.6641 A0,0 0 0 0 368,350.6641 L368,275 L358,265 L217,265 A0,0 0 0 0 217,265 " fill="#FBFB77" filter="url(#f1d556pv29koyc)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M358,265 L358,275 L368,275 L358,265 " 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="282.0669"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="89" x="223" y="297.1997">This is class D</text>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="130" x="223" y="312.3325">which is a little like B</text>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="105" x="223" y="327.4653">and a little like C</text>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="227" y="342.5981"/>
<path d="M275.32,82.96 C250.75,94.38 227.18,105.62 215.5,112 C198.38,121.35 180.15,132.52 164.22,142.7 " fill="none" id="C_0000987634239855407298&lt;-C_0000594234458687375950" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="272.59,76.51,293.68,74.48,278.46,89.22,272.59,76.51" 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_0000987634239855407298&lt;-C_0001142499429598587507" style="stroke: #A80036; stroke-width: 1.0;"/>

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 18 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="f7y73knlg8t93" width="300%" x="-1" y="-1">
<filter height="300%" id="f6ptlekrphto7" 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,115 +9,128 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f7y73knlg8t93)" height="380.9219" id="C_0001371951663534295727" style="stroke: #A80036; stroke-width: 1.5;" width="329" x="7" y="7"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f6ptlekrphto7)" 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"/>
<ellipse cx="18" cy="50" 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="106" x="27" y="53.2104">A() = default : void</text>
<ellipse cx="18" cy="62.8047" 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="71" x="27" y="66.0151">A(int i) : void</text>
<ellipse cx="18" cy="75.6094" 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="137" x="27" y="78.8198">A(A &amp;&amp;) = default : void</text>
<ellipse cx="18" cy="88.4141" 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="165" x="27" y="91.6245">A(const A &amp;) = deleted : void</text>
<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>
<ellipse cx="18" cy="114.0234" 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="115" x="27" y="117.2339">~A() = default : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="8" x2="335" y1="123.8281" y2="123.8281"/>
<ellipse cx="18" cy="134.8281" 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="219" x="27" y="138.0386">operator=(A &amp;&amp; other) noexcept : A &amp;</text>
<ellipse cx="18" cy="147.6328" 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="209" x="27" y="150.8433">operator=(A &amp; other) noexcept : A &amp;</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="8" x2="335" y1="157.4375" y2="157.4375"/>
<ellipse cx="18" cy="168.4375" 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="108" x="27" y="171.6479">operator++() : A &amp;</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="8" x2="335" y1="178.2422" y2="178.2422"/>
<ellipse cx="18" cy="189.2422" 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="108" x="27" y="192.4526">auto_method() : int</text>
<ellipse cx="18" cy="202.0469" 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="122" x="27" y="205.2573">basic_method() : void</text>
<ellipse cx="18" cy="214.8516" 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="158" x="27" y="218.062">const_method() const : void</text>
<ellipse cx="18" cy="227.6563" 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" text-decoration="underline" textLength="137" x="27" y="230.8667">create_from_int(int i) : A</text>
<ellipse cx="18" cy="240.4609" 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="145" x="27" y="243.6714">default_int(int i = 12) : int</text>
<ellipse cx="18" cy="253.2656" 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="303" x="27" y="256.4761">default_string(int i, std::string s = "abc") : std::string</text>
<ellipse cx="18" cy="266.0703" 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="148" x="27" y="269.2808">double_int(const int i) : int</text>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="275.875"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="131" x="27" y="282.0854">private_method() : void</text>
<polygon fill="#FFFF44" points="18,286.6797,22,290.6797,18,294.6797,14,290.6797" style="stroke: #B38D22; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="27" y="294.8901">protected_method() : void</text>
<ellipse cx="18" cy="304.4844" 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="195" x="27" y="307.6948">size() constexpr const : std::size_t</text>
<ellipse cx="18" cy="317.2891" 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" text-decoration="underline" textLength="114" x="27" y="320.4995">static_method() : int</text>
<ellipse cx="18" cy="330.0938" 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="235" x="27" y="333.3042">sum(const double a, const double b) : int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="8" x2="335" y1="339.8984" y2="339.8984"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L34" target="_top" title="public_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L34" 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="45"/>
<ellipse cx="18" cy="50" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L70" target="_top" title="a_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L34" target="_top" title="public_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L70" target="_top" title="a_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L42" target="_top" title="protected_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="57.8047"/>
<polygon fill="none" points="18,57.8047,22,61.8047,18,65.8047,14,61.8047" style="stroke: #B38D22; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L55" target="_top" title="auto_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L42" target="_top" title="protected_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="66.0151">protected_member : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L55" target="_top" title="auto_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L51" target="_top" title="private_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L51" 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="70.6094"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="72.6094"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L70" target="_top" title="b_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L51" target="_top" title="private_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="78.8198">private_member : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L70" target="_top" title="b_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L52" target="_top" title="a_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="83.4141"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="85.4141"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L70" target="_top" title="c_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L52" target="_top" title="a_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="39" x="27" y="91.6245">a_ : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L70" target="_top" title="c_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L52" target="_top" title="b_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="96.2188"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="98.2188"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L62" target="_top" title="compare" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L52" target="_top" title="b_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="39" x="27" y="104.4292">b_ : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L62" target="_top" title="compare" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L52" target="_top" title="c_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="109.0234"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="111.0234"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L69" target="_top" title="private_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L52" target="_top" title="c_" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="38" x="27" y="117.2339">c_ : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L69" target="_top" title="private_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L35" target="_top" title="static_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L35" 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="121.8281"/>
<ellipse cx="18" cy="126.8281" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L60" target="_top" title="protected_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L35" target="_top" title="static_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="130.0386">static_int : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L60" target="_top" title="protected_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L36" target="_top" title="static_const_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L36" 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="134.6328"/>
<ellipse cx="18" cy="139.6328" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L52" target="_top" title="public_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L36" target="_top" title="static_const_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="142.8433">static_const_int : const int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L52" target="_top" title="public_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L37" target="_top" title="auto_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L37" 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="147.4375"/>
<ellipse cx="18" cy="152.4375" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L54" target="_top" title="static_const_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L37" target="_top" title="auto_member" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="155.6479">auto_member : const unsigned long</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L54" target="_top" title="static_const_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="8" x2="335" y1="162.2422" y2="162.2422"/>
<ellipse cx="18" cy="173.2422" 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="106" x="27" y="176.4526">A() = default : void</text>
<ellipse cx="18" cy="186.0469" 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="71" x="27" y="189.2573">A(int i) : void</text>
<ellipse cx="18" cy="198.8516" 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="175" x="27" y="202.062">A(class A &amp;&amp; ) = default : void</text>
<ellipse cx="18" cy="211.6563" 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="200" x="27" y="214.8667">A(const class A &amp; ) = default : void</text>
<ellipse cx="18" cy="224.4609" 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="115" x="27" y="227.6714">~A() = default : void</text>
<ellipse cx="18" cy="237.2656" 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="122" x="27" y="240.4761">basic_method() : void</text>
<ellipse cx="18" cy="250.0703" 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" text-decoration="underline" textLength="114" x="27" y="253.2808">static_method() : int</text>
<ellipse cx="18" cy="262.875" 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="158" x="27" y="266.0854">const_method() const : void</text>
<ellipse cx="18" cy="275.6797" 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="108" x="27" y="278.8901">auto_method() : int</text>
<ellipse cx="18" cy="288.4844" 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="148" x="27" y="291.6948">double_int(const int i) : int</text>
<ellipse cx="18" cy="301.2891" 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="235" x="27" y="304.4995">sum(const double a, const double b) : int</text>
<ellipse cx="18" cy="314.0938" 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="145" x="27" y="317.3042">default_int(int i = 12) : int</text>
<ellipse cx="18" cy="326.8984" 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="303" x="27" y="330.1089">default_string(int i, std::string s = "abc") : std::string</text>
<ellipse cx="18" cy="339.7031" 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" text-decoration="underline" textLength="171" x="27" y="342.9136">create_from_int(int i) : class A</text>
<polygon fill="#FFFF44" points="18,347.5078,22,351.5078,18,355.5078,14,351.5078" style="stroke: #B38D22; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="27" y="355.7183">protected_method() : void</text>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="15" y="362.3125"/>
<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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L44" target="_top" title="compare" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L53" target="_top" title="static_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00003/t00003.cc#L44" target="_top" title="compare" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="236" x="27" y="381.3276">compare : std::function&lt;bool (const int)&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00003/t00003.cc#L53" target="_top" title="static_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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: 18 KiB

After

Width:  |  Height:  |  Size: 20 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="f1tg0mm62cz8gy" width="300%" x="-1" y="-1">
<filter height="300%" id="fwg06hnjf7dl1" 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,56 +9,227 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00004/t00004.cc#L4" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00004/t00004.cc#L4" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tg0mm62cz8gy)" height="73.6094" id="C_0001552274940876611774" 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"/>
<ellipse cx="36" cy="313" 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="96" x="45" y="316.2104">foo() const : void</text>
<ellipse cx="36" cy="325.8047" 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="103" x="45" y="329.0151">foo2() const : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L4" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L4" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00004/t00004.cc#L8" target="_top" title="AA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00004/t00004.cc#L8" xlink:show="new" xlink:title="AA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tg0mm62cz8gy)" height="48" id="C_0002271225329027363802" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00004/t00004.cc#L10" target="_top" title="Lights" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00004/t00004.cc#L10" xlink:show="new" xlink:title="Lights" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tg0mm62cz8gy)" height="86.4141" id="C_0002089215354681672811" style="stroke: #A80036; stroke-width: 1.5;" width="69" x="6" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L6" target="_top" title="B##AA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L6" xlink:show="new" xlink:title="B##AA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00004/t00004.cc#L12" target="_top" title="AAA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00004/t00004.cc#L12" xlink:show="new" xlink:title="AAA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tg0mm62cz8gy)" height="48" id="C_0001045909334877971791" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L9" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L9" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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"/>
<ellipse cx="187.5" cy="333" 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="96" x="196.5" y="336.2104">foo() const : void</text>
<ellipse cx="187.5" cy="345.8047" 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="103" x="196.5" y="349.0151">foo2() const : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="177.5" x2="304.5" y1="355.6094" y2="355.6094"/>
</a>
<path d="M89.5,202.23 C89.5,214.91 89.5,231.15 89.5,246.64 " fill="none" id="C_0002271225329027363802-&gt;C_0001552274940876611774" 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_0002089215354681672811-&gt;C_0002271225329027363802" 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_0001045909334877971791-&gt;C_0002271225329027363802" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L13" target="_top" title="A##AA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L13" xlink:show="new" xlink:title="A##AA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L15" target="_top" title="A##AA##Lights" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L15" xlink:show="new" xlink:title="A##AA##Lights" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L17" target="_top" title="A##AA##AAA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L17" xlink:show="new" xlink:title="A##AA##AAA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L33" target="_top" title="C##B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L33" xlink:show="new" xlink:title="C##B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L23" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L23" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L37" target="_top" title="b_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L37" target="_top" title="b_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L25" target="_top" title="t" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L25" target="_top" title="t" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L27" target="_top" title="C##AA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L27" xlink:show="new" xlink:title="C##AA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L28" target="_top" title="C##AA##AAA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L28" xlink:show="new" xlink:title="C##AA##AAA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L30" target="_top" title="C##AA##CCC" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L30" xlink:show="new" xlink:title="C##AA##CCC" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L33" target="_top" title="C##B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L33" xlink:show="new" xlink:title="C##B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L34" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L34" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L39" target="_top" title="C##CC" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L39" xlink:show="new" xlink:title="C##CC" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L43" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L43" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L45" target="_top" title="D##AA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L45" xlink:show="new" xlink:title="D##AA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L47" target="_top" title="D##DD" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00004/t00004.cc#L47" xlink:show="new" xlink:title="D##DD" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwg06hnjf7dl1)" 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: 9.1 KiB

After

Width:  |  Height:  |  Size: 37 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="f1jxj28w97lyya" width="300%" x="-1" y="-1">
<filter height="300%" id="f39enlhp7s7hk" 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,207 +9,207 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L3" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L3" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jxj28w97lyya)" height="48" id="C_0000096355893895780319" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L3" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L3" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f39enlhp7s7hk)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L6" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L6" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jxj28w97lyya)" height="48" id="C_0001909425857334087541" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="81" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L5" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L5" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f39enlhp7s7hk)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L9" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L9" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jxj28w97lyya)" height="48" id="C_0000968176384460064907" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="156" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L7" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L7" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f39enlhp7s7hk)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L12" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L12" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jxj28w97lyya)" height="48" id="C_0001735599590836186693" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="231.5" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L9" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L9" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f39enlhp7s7hk)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L15" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L15" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jxj28w97lyya)" height="48" id="C_0000887960136921844658" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="308" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L11" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L11" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f39enlhp7s7hk)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L18" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L18" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jxj28w97lyya)" height="48" id="C_0000772719357856231772" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="383.5" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L13" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L13" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f39enlhp7s7hk)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L21" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L21" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jxj28w97lyya)" height="48" id="C_0000979147885884736437" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="457.5" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L15" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L15" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f39enlhp7s7hk)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L24" target="_top" title="H" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L24" xlink:show="new" xlink:title="H" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jxj28w97lyya)" height="48" id="C_0001440673301054236675" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="533.5" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L17" target="_top" title="H" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L17" xlink:show="new" xlink:title="H" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f39enlhp7s7hk)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L27" target="_top" title="I" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L27" xlink:show="new" xlink:title="I" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jxj28w97lyya)" height="48" id="C_0000109681731550086430" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="609.5" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L19" target="_top" title="I" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L19" xlink:show="new" xlink:title="I" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f39enlhp7s7hk)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L30" target="_top" title="J" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L30" xlink:show="new" xlink:title="J" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jxj28w97lyya)" height="48" id="C_0000338330011969650325" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="679.5" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L21" target="_top" title="J" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L21" xlink:show="new" xlink:title="J" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f39enlhp7s7hk)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L33" target="_top" title="K" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L33" xlink:show="new" xlink:title="K" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jxj28w97lyya)" height="48" id="C_0002179119389830432509" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="749.5" y="325"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L23" target="_top" title="K" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L23" xlink:show="new" xlink:title="K" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f39enlhp7s7hk)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L36" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L36" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jxj28w97lyya)" height="240.0703" id="C_0000630692407373144211" style="stroke: #A80036; stroke-width: 1.5;" width="212" x="297" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L25" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L25" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f39enlhp7s7hk)" 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="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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L38" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="303" y="46"/>
<ellipse cx="308" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L31" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L38" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="317" y="54.2104">some_int : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L31" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L39" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="303" y="58.8047"/>
<ellipse cx="308" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L32" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L39" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="134" x="317" y="67.0151">some_int_pointer : int *</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L32" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L40" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="303" y="71.6094"/>
<ellipse cx="308" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L33" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L40" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="186" x="317" y="79.8198">some_int_pointer_pointer : int **</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L33" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L41" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="303" y="84.4141"/>
<ellipse cx="308" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L34" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L41" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="153" x="317" y="92.6245">some_int_reference : int &amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L34" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L42" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="303" y="97.2188"/>
<ellipse cx="308" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L35" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L42" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="317" y="105.4292">a : A</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L35" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L43" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="303" y="110.0234"/>
<ellipse cx="308" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L36" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L43" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="37" x="317" y="118.2339">b : B *</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L36" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L44" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="303" y="122.8281"/>
<ellipse cx="308" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L37" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L44" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="40" x="317" y="131.0386">c : C &amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L37" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L45" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="303" y="135.6328"/>
<ellipse cx="308" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L38" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L45" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="72" x="317" y="143.8433">d : const D *</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L38" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L46" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="303" y="148.4375"/>
<ellipse cx="308" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L39" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L46" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="75" x="317" y="156.6479">e : const E &amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L39" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L47" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="303" y="161.2422"/>
<ellipse cx="308" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L40" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L47" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="46" x="317" y="169.4526">f : F &amp;&amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L40" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L48" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="303" y="174.0469"/>
<ellipse cx="308" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L41" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L48" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="44" x="317" y="182.2573">g : G **</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L41" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L49" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="303" y="186.8516"/>
<ellipse cx="308" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L27" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L49" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="49" x="317" y="195.062">h : H ***</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L27" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L50" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="303" y="199.6563"/>
<ellipse cx="308" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L28" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L50" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="38" x="317" y="207.8667">i : I *&amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L28" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L51" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="303" y="212.4609"/>
<ellipse cx="308" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L29" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L51" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="72" x="317" y="220.6714">j : volatile J *</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L29" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L52" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="303" y="225.2656"/>
<ellipse cx="308" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L30" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00005/t00005.cc#L52" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="35" x="317" y="233.4761">k : K *</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00005/t00005.cc#L30" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="298" x2="508" y1="240.0703" y2="240.0703"/>
<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>

Before

Width:  |  Height:  |  Size: 41 KiB

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="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="fkgzuihjwvzj5" width="300%" x="-1" y="-1">
<filter height="300%" id="frdvrl29dgty1" 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,258 +9,260 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0000989095304444672400" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L10" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L10" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0000648285260245005311" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="81" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L9" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L9" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L13" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L13" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0000323304333007297774" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="156" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L11" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L11" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L16" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L16" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0001006912399043633492" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="231.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L13" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L13" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L19" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L19" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0001092550394020578978" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="1146" y="414.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L15" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L15" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L22" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L22" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0000965398761810782236" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="307.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L17" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L17" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L25" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L25" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0001764732000887030464" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="381.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L19" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L19" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L28" target="_top" title="H" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L28" xlink:show="new" xlink:title="H" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0001669285599837552146" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="457.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L21" target="_top" title="H" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L21" xlink:show="new" xlink:title="H" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L31" target="_top" title="I" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L31" xlink:show="new" xlink:title="I" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0002234750598599000377" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="533.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L23" target="_top" title="I" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L23" xlink:show="new" xlink:title="I" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L34" target="_top" title="J" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L34" xlink:show="new" xlink:title="J" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0001335933649375465369" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="603.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L25" target="_top" title="J" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L25" xlink:show="new" xlink:title="J" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L37" target="_top" title="K" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L37" xlink:show="new" xlink:title="K" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0001603190364864080123" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="673.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L27" target="_top" title="K" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L27" xlink:show="new" xlink:title="K" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L40" target="_top" title="L" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L40" xlink:show="new" xlink:title="L" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0000305487238408320046" style="stroke: #A80036; stroke-width: 1.5;" width="38" x="748" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L29" target="_top" title="L" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L29" xlink:show="new" xlink:title="L" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L43" target="_top" title="M" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L43" xlink:show="new" xlink:title="M" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0001664744512423723275" style="stroke: #A80036; stroke-width: 1.5;" width="42" x="821" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L31" target="_top" title="M" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L31" xlink:show="new" xlink:title="M" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L46" target="_top" title="N" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L46" xlink:show="new" xlink:title="N" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0000950210019792152600" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="898.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L33" target="_top" title="N" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L33" xlink:show="new" xlink:title="N" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L49" target="_top" title="NN" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L49" xlink:show="new" xlink:title="NN" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0001662349735899726224" style="stroke: #A80036; stroke-width: 1.5;" width="50" x="975" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L35" target="_top" title="NN" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L35" xlink:show="new" xlink:title="NN" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L52" target="_top" title="NNN" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L52" xlink:show="new" xlink:title="NNN" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="48" id="C_0001963145075481599858" style="stroke: #A80036; stroke-width: 1.5;" width="59" x="1060.5" y="299"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L37" target="_top" title="NNN" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L37" xlink:show="new" xlink:title="NNN" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L55" target="_top" title="custom_container" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L55" xlink:show="new" xlink:title="custom_container" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="60.8047" id="C_0000916380191954937631" style="stroke: #A80036; stroke-width: 1.5;" width="155" x="1221.5" y="408"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L39" target="_top" title="custom_container" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L39" xlink:show="new" xlink:title="custom_container" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L57" target="_top" title="data" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L41" target="_top" title="data" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L57" target="_top" title="data" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L41" target="_top" title="data" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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(#fkgzuihjwvzj5)" 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 href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L60" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L60" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fkgzuihjwvzj5)" height="214.4609" id="C_0000303025561016882526" style="stroke: #A80036; stroke-width: 1.5;" width="230" x="471" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L39" target="_top" title="custom_container" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L39" xlink:show="new" xlink:title="custom_container" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L44" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L44" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#frdvrl29dgty1)" 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="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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L62" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="477" y="46"/>
<ellipse cx="482" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L46" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L62" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="491" y="54.2104">a : std::vector&lt;A&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L46" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L63" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="477" y="58.8047"/>
<ellipse cx="482" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L47" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L63" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="116" x="491" y="67.0151">b : std::vector&lt;B *&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L47" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L65" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="477" y="71.6094"/>
<ellipse cx="482" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L49" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L65" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="491" y="79.8198">c : std::map&lt;int,C&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L49" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L66" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="477" y="84.4141"/>
<ellipse cx="482" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L50" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L66" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="124" x="491" y="92.6245">d : std::map&lt;int,D *&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L50" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L68" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="477" y="97.2188"/>
<ellipse cx="482" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L52" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L68" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="491" y="105.4292">e : custom_container&lt;E&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L52" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L70" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="477" y="110.0234"/>
<ellipse cx="482" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L54" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L70" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="491" y="118.2339">f : std::vector&lt;std::vector&lt;F&gt;&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L54" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L71" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="477" y="122.8281"/>
<ellipse cx="482" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L55" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L71" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="204" x="491" y="131.0386">g : std::map&lt;int,std::vector&lt;G *&gt;&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L55" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L73" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="477" y="135.6328"/>
<ellipse cx="482" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L57" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L73" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="491" y="143.8433">h : std::array&lt;H,10&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L57" target="_top" title="h" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L74" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="477" y="148.4375"/>
<ellipse cx="482" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L58" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L74" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="113" x="491" y="156.6479">i : std::array&lt;I *,5&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L58" target="_top" title="i" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L76" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="477" y="161.2422"/>
<ellipse cx="482" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L60" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L76" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="491" y="169.4526">j : J[10]</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L60" target="_top" title="j" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L77" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="477" y="174.0469"/>
<ellipse cx="482" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L61" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L77" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="57" x="491" y="182.2573">k : K *[20]</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L61" target="_top" title="k" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L79" target="_top" title="lm" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="477" y="186.8516"/>
<ellipse cx="482" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L63" target="_top" title="lm" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L79" target="_top" title="lm" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="491" y="195.062">lm : std::vector&lt;std::pair&lt;L,M&gt;&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L63" target="_top" title="lm" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L81" target="_top" title="ns" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="477" y="199.6563"/>
<ellipse cx="482" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L65" target="_top" title="ns" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00006/t00006.cc#L81" target="_top" title="ns" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="491" y="207.8667">ns : std::tuple&lt;N,NN,NNN&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00006/t00006.cc#L65" target="_top" title="ns" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="472" x2="700" 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_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_0000050153113082434858-&gt;C_0000916380191954937631" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

View File

@@ -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,158 @@ public:
std::shared_ptr<B> b;
std::weak_ptr<C> c;
};
}
}
} // namespace t00007
} // namespace clanguml
```
## Generated UML diagrams
![t00007_class](./t00007_class.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": {
"file": "../../tests/t00007/t00007.cc",
"line": 5
},
"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": {
"file": "../../tests/t00007/t00007.cc",
"line": 7
},
"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": {
"file": "../../tests/t00007/t00007.cc",
"line": 9
},
"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": {
"file": "../../tests/t00007/t00007.cc",
"line": 13
},
"type": "std::unique_ptr<A>"
},
{
"access": "public",
"is_static": false,
"name": "b",
"source_location": {
"file": "../../tests/t00007/t00007.cc",
"line": 14
},
"type": "std::shared_ptr<B>"
},
{
"access": "public",
"is_static": false,
"name": "c",
"source_location": {
"file": "../../tests/t00007/t00007.cc",
"line": 15
},
"type": "std::weak_ptr<C>"
}
],
"methods": [],
"name": "R",
"namespace": "clanguml::t00007",
"source_location": {
"file": "../../tests/t00007/t00007.cc",
"line": 11
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"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="ffrwv6xyf56yc" width="300%" x="-1" y="-1">
<filter height="300%" id="f1x7orodo2ct4p" 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,59 +9,59 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00007/t00007.cc#L5" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00007/t00007.cc#L5" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ffrwv6xyf56yc)" height="48" id="C_0000098876622534017019" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="171"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00007/t00007.cc#L5" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00007/t00007.cc#L5" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1x7orodo2ct4p)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00007/t00007.cc#L8" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00007/t00007.cc#L8" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ffrwv6xyf56yc)" height="48" id="C_0000696381312773707784" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="81" y="171"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00007/t00007.cc#L7" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00007/t00007.cc#L7" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1x7orodo2ct4p)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00007/t00007.cc#L11" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00007/t00007.cc#L11" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ffrwv6xyf56yc)" height="48" id="C_0000972031178679364068" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="156" y="171"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00007/t00007.cc#L9" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00007/t00007.cc#L9" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1x7orodo2ct4p)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00007/t00007.cc#L14" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00007/t00007.cc#L14" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ffrwv6xyf56yc)" height="86.4141" id="C_0000066905874721300157" style="stroke: #A80036; stroke-width: 1.5;" width="159" x="21.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00007/t00007.cc#L11" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00007/t00007.cc#L11" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1x7orodo2ct4p)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00007/t00007.cc#L16" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00007/t00007.cc#L13" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00007/t00007.cc#L16" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00007/t00007.cc#L13" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00007/t00007.cc#L17" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00007/t00007.cc#L14" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00007/t00007.cc#L17" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00007/t00007.cc#L14" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00007/t00007.cc#L18" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00007/t00007.cc#L15" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00007/t00007.cc#L18" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00007/t00007.cc#L15" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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_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>

Before

Width:  |  Height:  |  Size: 12 KiB

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:616px;height:390px;" version="1.1" viewBox="0 0 616 390" width="616px" 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:1178px;height:403px;" version="1.1" viewBox="0 0 1178 403" width="1178px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="fklygd349yi30" width="300%" x="-1" y="-1">
<filter height="300%" id="f1btr85d23lf63" 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,124 +9,169 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L9" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L9" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fklygd349yi30)" height="124.8281" id="C_0001329861609426650509" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L9" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L9" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1btr85d23lf63)" height="124.8281" id="C_0001657660300852090121" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L11" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L17" target="_top" title="comparator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L11" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L17" target="_top" title="comparator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L12" target="_top" title="pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L15" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L12" target="_top" title="pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="67.0151">pointer : T *</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L15" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L13" target="_top" title="reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L12" target="_top" title="pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L13" target="_top" title="reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="79.8198">reference : T &amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L12" target="_top" title="pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L14" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L13" target="_top" title="reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L14" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L13" target="_top" title="reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L15" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L11" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L15" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L11" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L17" target="_top" title="comparator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L14" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L17" target="_top" title="comparator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L14" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L20" target="_top" title="Vector" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L20" xlink:show="new" xlink:title="Vector" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fklygd349yi30)" height="60.8047" id="C_0001677407014842680311" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L20" target="_top" title="Vector" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L20" xlink:show="new" xlink:title="Vector" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1btr85d23lf63)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L21" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L21" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L21" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L21" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L24" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L24" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fklygd349yi30)" height="60.8047" id="C_0001968575752686868237" style="stroke: #A80036; stroke-width: 1.5;" width="177" x="413" y="319"/>
<ellipse cx="471.75" cy="335" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M474.7188,340.6406 Q474.1406,340.9375 473.5,341.0781 Q472.8594,341.2344 472.1563,341.2344 Q469.6563,341.2344 468.3281,339.5938 Q467.0156,337.9375 467.0156,334.8125 Q467.0156,331.6875 468.3281,330.0313 Q469.6563,328.375 472.1563,328.375 Q472.8594,328.375 473.5,328.5313 Q474.1563,328.6875 474.7188,328.9844 L474.7188,331.7031 Q474.0938,331.125 473.5,330.8594 Q472.9063,330.5781 472.2813,330.5781 Q470.9375,330.5781 470.25,331.6563 Q469.5625,332.7188 469.5625,334.8125 Q469.5625,336.9063 470.25,337.9844 Q470.9375,339.0469 472.2813,339.0469 Q472.9063,339.0469 473.5,338.7813 Q474.0938,338.5 474.7188,337.9219 L474.7188,340.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="492.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="552" y="316"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="39" x="553" y="328.1387">T,C&lt;&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="414" x2="589" y1="351" y2="351"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L24" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L24" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1btr85d23lf63)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L25" target="_top" title="template_template" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="419" y="357"/>
<ellipse cx="424" cy="362" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L25" target="_top" title="template_template" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L25" target="_top" title="template_template" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="433" y="365.2104">template_template : C&lt;T&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L25" target="_top" title="template_template" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="414" x2="589" y1="371.8047" y2="371.8047"/>
<rect fill="#FEFECE" filter="url(#fklygd349yi30)" height="48" id="C_0001449136415707203971" style="stroke: #A80036; stroke-width: 1.5;" width="105" x="449" y="210"/>
<ellipse cx="464" cy="226" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M466.9688,231.6406 Q466.3906,231.9375 465.75,232.0781 Q465.1094,232.2344 464.4063,232.2344 Q461.9063,232.2344 460.5781,230.5938 Q459.2656,228.9375 459.2656,225.8125 Q459.2656,222.6875 460.5781,221.0313 Q461.9063,219.375 464.4063,219.375 Q465.1094,219.375 465.75,219.5313 Q466.4063,219.6875 466.9688,219.9844 L466.9688,222.7031 Q466.3438,222.125 465.75,221.8594 Q465.1563,221.5781 464.5313,221.5781 Q463.1875,221.5781 462.5,222.6563 Q461.8125,223.7188 461.8125,225.8125 Q461.8125,227.9063 462.5,228.9844 Q463.1875,230.0469 464.5313,230.0469 Q465.1563,230.0469 465.75,229.7813 Q466.3438,229.5 466.9688,228.9219 L466.9688,231.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="478" 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="494" y="207"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="61" x="495" y="219.1387">int,Vector</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="450" x2="553" y1="242" y2="242"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="450" x2="553" y1="250" y2="250"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L28" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L28" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fklygd349yi30)" height="86.4141" id="C_0001562396858816419857" style="stroke: #A80036; stroke-width: 1.5;" width="207" x="398" y="27.5"/>
<ellipse cx="492.75" cy="43.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M495.7188,49.1406 Q495.1406,49.4375 494.5,49.5781 Q493.8594,49.7344 493.1563,49.7344 Q490.6563,49.7344 489.3281,48.0938 Q488.0156,46.4375 488.0156,43.3125 Q488.0156,40.1875 489.3281,38.5313 Q490.6563,36.875 493.1563,36.875 Q493.8594,36.875 494.5,37.0313 Q495.1563,37.1875 495.7188,37.4844 L495.7188,40.2031 Q495.0938,39.625 494.5,39.3594 Q493.9063,39.0781 493.2813,39.0781 Q491.9375,39.0781 491.25,40.1563 Q490.5625,41.2188 490.5625,43.3125 Q490.5625,45.4063 491.25,46.4844 Q491.9375,47.5469 493.2813,47.5469 Q493.9063,47.5469 494.5,47.2813 Q495.0938,47 495.7188,46.4219 L495.7188,49.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="513.25" y="47.6543">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="399" x2="604" y1="59.5" y2="59.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L24" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L24" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1btr85d23lf63)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L29" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L28" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L28" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1btr85d23lf63)" 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"/>
<ellipse cx="457" cy="87.3047" 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="85" x="466" y="90.5151">add(int i) : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="447" x2="710" y1="97.1094" y2="97.1094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00008/t00008.cc#L29" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L29" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="399" x2="604" y1="80.3047" y2="80.3047"/>
<ellipse cx="409" cy="91.3047" 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="85" x="418" y="94.5151">add(int i) : void</text>
<ellipse cx="409" cy="104.1094" 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="181" x="418" y="107.3198">D(std::tuple&lt;Items...&gt; * ) : void</text>
<path d="M501.5,258.24 C501.5,269.87 501.5,284.42 501.5,298.43 " 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="508.5,298.81,501.5,318.81,494.5,298.81,508.5,298.81" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M501.5,126.57 C501.5,154.93 501.5,188.01 501.5,209.67 " fill="none" id="C_0001562396858816419857&lt;-C_0001449136415707203971" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="501.5,113.51,497.5,119.51,501.5,125.51,505.5,119.51,501.5,113.51" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="507.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="514.5" y="176.0669">ints</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L29" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L36" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L36" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1btr85d23lf63)" height="48" id="C_0001787658457052431115" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="903.5" y="338.5"/>
<ellipse cx="918.5" cy="354.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M921.4688,360.1406 Q920.8906,360.4375 920.25,360.5781 Q919.6094,360.7344 918.9063,360.7344 Q916.4063,360.7344 915.0781,359.0938 Q913.7656,357.4375 913.7656,354.3125 Q913.7656,351.1875 915.0781,349.5313 Q916.4063,347.875 918.9063,347.875 Q919.6094,347.875 920.25,348.0313 Q920.9063,348.1875 921.4688,348.4844 L921.4688,351.2031 Q920.8438,350.625 920.25,350.3594 Q919.6563,350.0781 919.0313,350.0781 Q917.6875,350.0781 917,351.1563 Q916.3125,352.2188 916.3125,354.3125 Q916.3125,356.4063 917,357.4844 Q917.6875,358.5469 919.0313,358.5469 Q919.6563,358.5469 920.25,358.2813 Q920.8438,358 921.4688,357.4219 L921.4688,360.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="932.5" y="358.6543">E</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="904.5" x2="942.5" y1="370.5" y2="370.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="904.5" x2="942.5" y1="378.5" y2="378.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L37" target="_top" title="E##nested_template" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L37" xlink:show="new" xlink:title="E##nested_template" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1btr85d23lf63)" height="60.8047" id="C_0001549419203490064906" style="stroke: #A80036; stroke-width: 1.5;" width="242" x="922.5" y="210"/>
<ellipse cx="968.75" cy="226" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M971.7188,231.6406 Q971.1406,231.9375 970.5,232.0781 Q969.8594,232.2344 969.1563,232.2344 Q966.6563,232.2344 965.3281,230.5938 Q964.0156,228.9375 964.0156,225.8125 Q964.0156,222.6875 965.3281,221.0313 Q966.6563,219.375 969.1563,219.375 Q969.8594,219.375 970.5,219.5313 Q971.1563,219.6875 971.7188,219.9844 L971.7188,222.7031 Q971.0938,222.125 970.5,221.8594 Q969.9063,221.5781 969.2813,221.5781 Q967.9375,221.5781 967.25,222.6563 Q966.5625,223.7188 966.5625,225.8125 Q966.5625,227.9063 967.25,228.9844 Q967.9375,230.0469 969.2813,230.0469 Q969.9063,230.0469 970.5,229.7813 Q971.0938,229.5 971.7188,228.9219 L971.7188,231.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="122" x="989.25" 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="1150.5" y="207"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="15" x="1151.5" y="219.1387">ET</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="923.5" x2="1163.5" y1="242" y2="242"/>
<ellipse cx="933.5" cy="253" 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" text-decoration="underline" textLength="216" x="942.5" y="256.2104">get(ET * d) : E::nested_template::DT *</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="923.5" x2="1163.5" y1="262.8047" y2="262.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L44" target="_top" title="E##nested_template" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00008/t00008.cc#L44" xlink:show="new" xlink:title="E##nested_template" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1btr85d23lf63)" height="60.8047" id="C_0000033637089897037832" style="stroke: #A80036; stroke-width: 1.5;" width="355" x="746" y="40"/>
<ellipse cx="842.25" cy="56" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M845.2188,61.6406 Q844.6406,61.9375 844,62.0781 Q843.3594,62.2344 842.6563,62.2344 Q840.1563,62.2344 838.8281,60.5938 Q837.5156,58.9375 837.5156,55.8125 Q837.5156,52.6875 838.8281,51.0313 Q840.1563,49.375 842.6563,49.375 Q843.3594,49.375 844,49.5313 Q844.6563,49.6875 845.2188,49.9844 L845.2188,52.7031 Q844.5938,52.125 844,51.8594 Q843.4063,51.5781 842.7813,51.5781 Q841.4375,51.5781 840.75,52.6563 Q840.0625,53.7188 840.0625,55.8125 Q840.0625,57.9063 840.75,58.9844 Q841.4375,60.0469 842.7813,60.0469 Q843.4063,60.0469 844,59.7813 Q844.5938,59.5 845.2188,58.9219 L845.2188,61.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="122" x="862.75" 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="1074" y="37"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="28" x="1075" y="49.1387">char</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="747" x2="1100" y1="72" y2="72"/>
<ellipse cx="757" cy="83" 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" text-decoration="underline" textLength="329" x="766" y="86.2104">getDecl(char * c) : E::nested_template&lt;char&gt;::DeclType *</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="747" x2="1100" y1="92.8047" y2="92.8047"/>
</a>
<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="M1013.84,271.16 C995.79,289.21 972.77,312.23 954.49,330.51 " fill="none" id="C_0001549419203490064906-&gt;C_0001787658457052431115" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="949.4569" cy="335.5431" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="955.1137" x2="943.8" y1="329.8863" y2="341.2"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="955.1137" x2="943.8" y1="341.2" y2="329.8863"/>
<path d="M917.32,101.26 C910.02,140.26 899.57,210.78 905.5,271 C907.21,288.34 910.71,307.28 914.18,323.33 " fill="none" id="C_0000033637089897037832-&gt;C_0001787658457052431115" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="915.8023" cy="330.4477" fill="#FFFFFF" rx="8" ry="8" style="stroke: #A80036; stroke-width: 1.0;"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="914.0346" x2="917.57" y1="322.6455" y2="338.25"/>
<line style="stroke: #A80036; stroke-width: 1.0;" x1="923.6046" x2="908" y1="328.68" y2="332.2154"/>
<path d="M944.68,101.15 C962.96,126.74 989.66,164.13 1010.7,193.59 " 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="1016.4,189.52,1022.33,209.87,1005.01,197.66,1016.4,189.52" style="stroke: #A80036; stroke-width: 1.0;"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -35,9 +35,242 @@ public:
A<std::string> *astring;
A<std::vector<std::string>> &avector;
};
}
}
} // namespace t00009
} // namespace clanguml
```
## Generated UML diagrams
![t00009_class](./t00009_class.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": {
"file": "../../tests/t00009/t00009.cc",
"line": 9
},
"type": "T"
}
],
"methods": [],
"name": "A",
"namespace": "clanguml::t00009",
"source_location": {
"file": "../../tests/t00009/t00009.cc",
"line": 7
},
"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": {
"file": "../../tests/t00009/t00009.cc",
"line": 7
},
"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": {
"file": "../../tests/t00009/t00009.cc",
"line": 7
},
"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": {
"file": "../../tests/t00009/t00009.cc",
"line": 7
},
"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": {
"file": "../../tests/t00009/t00009.cc",
"line": 14
},
"type": "A<int>"
},
{
"access": "public",
"is_static": false,
"name": "astring",
"source_location": {
"file": "../../tests/t00009/t00009.cc",
"line": 15
},
"type": "A<std::string> *"
},
{
"access": "public",
"is_static": false,
"name": "avector",
"source_location": {
"file": "../../tests/t00009/t00009.cc",
"line": 16
},
"type": "A<std::vector<std::string>> &"
}
],
"methods": [],
"name": "B",
"namespace": "clanguml::t00009",
"source_location": {
"file": "../../tests/t00009/t00009.cc",
"line": 12
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"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="fx8dk0mo69zvq" width="300%" x="-1" y="-1">
<filter height="300%" id="f1mmdmwmrccjsg" 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,76 +9,82 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00009/t00009.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00009/t00009.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fx8dk0mo69zvq)" height="60.8047" id="C_0000412228989111660105" style="stroke: #A80036; stroke-width: 1.5;" width="75" x="116.5" y="280"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1mmdmwmrccjsg)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00009/t00009.cc#L9" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L9" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00009/t00009.cc#L9" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L9" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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(#fx8dk0mo69zvq)" 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"/>
<rect fill="#FEFECE" filter="url(#fx8dk0mo69zvq)" 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"/>
<rect fill="#FEFECE" filter="url(#fx8dk0mo69zvq)" 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 href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00009/t00009.cc#L12" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00009/t00009.cc#L12" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fx8dk0mo69zvq)" height="86.4141" id="C_0000176239714450247310" style="stroke: #A80036; stroke-width: 1.5;" width="257" x="25.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1mmdmwmrccjsg)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1mmdmwmrccjsg)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1mmdmwmrccjsg)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L12" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L12" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1mmdmwmrccjsg)" 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="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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00009/t00009.cc#L14" target="_top" title="aint" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="46"/>
<ellipse cx="36.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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L14" target="_top" title="aint" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00009/t00009.cc#L14" target="_top" title="aint" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="54.2104">aint : A&lt;int&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L14" target="_top" title="aint" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00009/t00009.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="58.8047"/>
<ellipse cx="36.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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00009/t00009.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="67.0151">astring : A&lt;std::string&gt; *</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00009/t00009.cc#L16" target="_top" title="avector" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="71.6094"/>
<ellipse cx="36.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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L16" target="_top" title="avector" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00009/t00009.cc#L16" target="_top" title="avector" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="79.8198">avector : A&lt;std::vector&lt;std::string&gt;&gt; &amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00009/t00009.cc#L16" target="_top" title="avector" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="26.5" x2="281.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_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_0001340793233843139195-&gt;C_0000412228989111660105" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -39,9 +39,235 @@ class C {
public:
B<int> aintstring;
};
}
}
} // namespace t00010
} // namespace clanguml
```
## Generated UML diagrams
![t00010_class](./t00010_class.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": {
"file": "../../tests/t00010/t00010.cc",
"line": 9
},
"type": "T"
},
{
"access": "public",
"is_static": false,
"name": "second",
"source_location": {
"file": "../../tests/t00010/t00010.cc",
"line": 10
},
"type": "P"
}
],
"methods": [],
"name": "A",
"namespace": "clanguml::t00010",
"source_location": {
"file": "../../tests/t00010/t00010.cc",
"line": 7
},
"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": {
"file": "../../tests/t00010/t00010.cc",
"line": 7
},
"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": {
"file": "../../tests/t00010/t00010.cc",
"line": 15
},
"type": "A<T,std::string>"
}
],
"methods": [],
"name": "B",
"namespace": "clanguml::t00010",
"source_location": {
"file": "../../tests/t00010/t00010.cc",
"line": 13
},
"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": {
"file": "../../tests/t00010/t00010.cc",
"line": 13
},
"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": {
"file": "../../tests/t00010/t00010.cc",
"line": 20
},
"type": "B<int>"
}
],
"methods": [],
"name": "C",
"namespace": "clanguml::t00010",
"source_location": {
"file": "../../tests/t00010/t00010.cc",
"line": 18
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"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="f19p1hqqkc0r6k" width="300%" x="-1" y="-1">
<filter height="300%" id="fz1ele7tc9x72" 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,78 +9,82 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00010/t00010.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00010/t00010.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f19p1hqqkc0r6k)" height="73.6094" id="C_0002222216618904514099" style="stroke: #A80036; stroke-width: 1.5;" width="86" x="49.5" y="502"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fz1ele7tc9x72)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00010/t00010.cc#L9" target="_top" title="first" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L9" target="_top" title="first" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00010/t00010.cc#L9" target="_top" title="first" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L9" target="_top" title="first" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00010/t00010.cc#L10" target="_top" title="second" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L10" target="_top" title="second" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00010/t00010.cc#L10" target="_top" title="second" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L10" target="_top" title="second" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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(#f19p1hqqkc0r6k)" 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 href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00010/t00010.cc#L13" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00010/t00010.cc#L13" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f19p1hqqkc0r6k)" height="60.8047" id="C_0002303611426082708583" style="stroke: #A80036; stroke-width: 1.5;" width="173" x="6" y="255"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fz1ele7tc9x72)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L13" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L13" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fz1ele7tc9x72)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00010/t00010.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00010/t00010.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L15" target="_top" title="astring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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(#f19p1hqqkc0r6k)" 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 href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00010/t00010.cc#L18" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00010/t00010.cc#L18" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f19p1hqqkc0r6k)" height="60.8047" id="C_0001880966578968892571" style="stroke: #A80036; stroke-width: 1.5;" width="132" x="26.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L13" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L13" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fz1ele7tc9x72)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L18" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L18" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fz1ele7tc9x72)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00010/t00010.cc#L20" target="_top" title="aintstring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L20" target="_top" title="aintstring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00010/t00010.cc#L20" target="_top" title="aintstring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00010/t00010.cc#L20" target="_top" title="aintstring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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_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_0002303611426082708583&lt;-C_0001861520693741915300" style="stroke: #A80036; stroke-width: 1.0;"/>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -19,8 +19,7 @@ diagrams:
File t00011.cc
```cpp
namespace external {
class C {
};
class C { };
}
namespace clanguml {
@@ -49,9 +48,169 @@ public:
void foo() { m_a->foo(); }
A *m_a;
};
}
}
} // namespace t00011
} // namespace clanguml
```
## Generated UML diagrams
![t00011_class](./t00011_class.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": {
"file": "../../tests/t00011/t00011.cc",
"line": 11
},
"type": "T"
}
],
"methods": [],
"name": "D",
"namespace": "clanguml::t00011",
"source_location": {
"file": "../../tests/t00011/t00011.cc",
"line": 10
},
"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": [],
"type": "void"
}
],
"name": "A",
"namespace": "clanguml::t00011",
"source_location": {
"file": "../../tests/t00011/t00011.cc",
"line": 14
},
"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": {
"file": "../../tests/t00011/t00011.cc",
"line": 29
},
"type": "clanguml::t00011::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": [],
"type": "void"
}
],
"name": "B",
"namespace": "clanguml::t00011",
"source_location": {
"file": "../../tests/t00011/t00011.cc",
"line": 26
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"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="ft3gm5naozxas" width="300%" x="-1" y="-1">
<filter height="300%" id="f1coli7zj5bsqw" 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,50 +9,50 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00011/t00011.cc#L11" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00011/t00011.cc#L11" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ft3gm5naozxas)" height="60.8047" id="C_0001150639902748052276" style="stroke: #A80036; stroke-width: 1.5;" width="75" x="6" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00011/t00011.cc#L10" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00011/t00011.cc#L10" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1coli7zj5bsqw)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00011/t00011.cc#L12" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00011/t00011.cc#L11" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00011/t00011.cc#L12" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00011/t00011.cc#L11" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00011/t00011.cc#L15" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00011/t00011.cc#L15" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ft3gm5naozxas)" height="60.8047" id="C_0001420516952857803719" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="116" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00011/t00011.cc#L14" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00011/t00011.cc#L14" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1coli7zj5bsqw)" 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"/>
<ellipse cx="127" cy="59" 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="61" x="136" y="62.2104">foo() : void</text>
<ellipse cx="127" cy="51" 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="61" x="136" y="54.2104">foo() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="117" x2="202" y1="60.8047" y2="60.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00011/t00011.cc#L27" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00011/t00011.cc#L27" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ft3gm5naozxas)" height="73.6094" id="C_0001687427603952049829" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="116" y="146"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00011/t00011.cc#L26" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00011/t00011.cc#L26" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1coli7zj5bsqw)" 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"/>
<ellipse cx="127" cy="189" 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="61" x="136" y="192.2104">foo() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="117" x2="202" y1="198.8047" y2="198.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00011/t00011.cc#L30" target="_top" title="m_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00011/t00011.cc#L30" 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="184"/>
<ellipse cx="127" cy="189" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00011/t00011.cc#L29" target="_top" title="m_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00011/t00011.cc#L30" target="_top" title="m_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="53" x="136" y="192.2104">m_a : A *</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00011/t00011.cc#L29" target="_top" title="m_a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="117" x2="202" y1="198.8047" y2="198.8047"/>
<ellipse cx="127" cy="209.8047" 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="61" x="136" y="213.0151">foo() : void</text>
<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;"/>
<ellipse cx="109.5" cy="108.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 9.7 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="f10dr4oellt54n" width="300%" x="-1" y="-1">
<filter height="300%" id="fp8mwglozd732" 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,32 +9,32 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L11" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L11" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f10dr4oellt54n)" height="73.6094" id="C_0001773299890023132282" style="stroke: #A80036; stroke-width: 1.5;" width="184" x="822" y="306"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L11" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L11" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fp8mwglozd732)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L12" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="344"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="830" y="346"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L12" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L12" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="352.2104">value : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L12" target="_top" title="value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L13" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="356.8047"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="830" y="358.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L13" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L13" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="365.0151">values : std::variant&lt;Ts...&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L13" target="_top" title="values" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="823" x2="1005" y1="371.6094" y2="371.6094"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L16" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L16" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f10dr4oellt54n)" height="60.8047" id="C_0002061171077567279746" style="stroke: #A80036; stroke-width: 1.5;" width="214" x="1134" y="312.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L16" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L16" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fp8mwglozd732)" 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>
@@ -43,15 +43,15 @@
<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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L17" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L17" xlink:show="new" xlink:title="ints" xlink:type="simple">
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L17" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L17" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L17" xlink:show="new" xlink:title="ints" xlink:type="simple">
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L17" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L20" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L20" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f10dr4oellt54n)" height="60.8047" id="C_0000627809578407650629" style="stroke: #A80036; stroke-width: 1.5;" width="207" x="149.5" y="312.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L20" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L20" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fp8mwglozd732)" 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>
@@ -60,97 +60,107 @@
<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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L21" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L21" xlink:show="new" xlink:title="ints" xlink:type="simple">
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L21" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L21" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L21" xlink:show="new" xlink:title="ints" xlink:type="simple">
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L21" target="_top" title="ints" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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(#f10dr4oellt54n)" 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"/>
<rect fill="#FEFECE" filter="url(#f10dr4oellt54n)" 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"/>
<rect fill="#FEFECE" filter="url(#f10dr4oellt54n)" 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"/>
<rect fill="#FEFECE" filter="url(#f10dr4oellt54n)" 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"/>
<rect fill="#FEFECE" filter="url(#f10dr4oellt54n)" 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 href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L24" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L24" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f10dr4oellt54n)" height="112.0234" id="C_0000559263385732885469" style="stroke: #A80036; stroke-width: 1.5;" width="493" x="783.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L11" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L11" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fp8mwglozd732)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L11" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L11" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fp8mwglozd732)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L16" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L16" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fp8mwglozd732)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L16" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L16" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fp8mwglozd732)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L20" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L20" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fp8mwglozd732)" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L24" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L24" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fp8mwglozd732)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L25" target="_top" title="a1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L25" target="_top" title="a1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L25" target="_top" title="a1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L25" target="_top" title="a1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L26" target="_top" title="a2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L26" target="_top" title="a2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L26" target="_top" title="a2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L26" target="_top" title="a2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L28" target="_top" title="b1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L28" target="_top" title="b1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L28" target="_top" title="b1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L28" target="_top" title="b1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L29" target="_top" title="b2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L29" target="_top" title="b2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L29" target="_top" title="b2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L29" target="_top" title="b2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L33" target="_top" title="c1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L33" target="_top" title="c1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00012/t00012.cc#L33" target="_top" title="c1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00012/t00012.cc#L33" target="_top" title="c1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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(#f10dr4oellt54n)" 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(#fp8mwglozd732)" 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_0000286972398942005457-&gt;C_0001773299890023132282" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 33 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="518px" preserveAspectRatio="none" style="width:1172px;height:518px;" version="1.1" viewBox="0 0 1172 518" width="1172px" 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="518px" preserveAspectRatio="none" style="width:1138px;height:518px;" version="1.1" viewBox="0 0 1138 518" width="1138px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="fdk7lnbodsfr8" width="300%" x="-1" y="-1">
<filter height="300%" id="fl6589i5zpeut" 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,235 +9,243 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L7" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L7" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fdk7lnbodsfr8)" height="60.8047" id="C_0000952770730316239752" style="stroke: #A80036; stroke-width: 1.5;" width="91" x="195" y="440.5"/>
<ellipse cx="210" cy="456.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M212.9688,462.1406 Q212.3906,462.4375 211.75,462.5781 Q211.1094,462.7344 210.4063,462.7344 Q207.9063,462.7344 206.5781,461.0938 Q205.2656,459.4375 205.2656,456.3125 Q205.2656,453.1875 206.5781,451.5313 Q207.9063,449.875 210.4063,449.875 Q211.1094,449.875 211.75,450.0313 Q212.4063,450.1875 212.9688,450.4844 L212.9688,453.2031 Q212.3438,452.625 211.75,452.3594 Q211.1563,452.0781 210.5313,452.0781 Q209.1875,452.0781 208.5,453.1563 Q207.8125,454.2188 207.8125,456.3125 Q207.8125,458.4063 208.5,459.4844 Q209.1875,460.5469 210.5313,460.5469 Q211.1563,460.5469 211.75,460.2813 Q212.3438,460 212.9688,459.4219 L212.9688,462.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="48" x="224" y="460.6543">ABCD::F</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="280" y="437.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="281" y="449.6387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="196" x2="285" y1="472.5" y2="472.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L7" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L7" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fl6589i5zpeut)" height="60.8047" id="C_0000952770730316239752" style="stroke: #A80036; stroke-width: 1.5;" width="91" x="161" y="440.5"/>
<ellipse cx="176" cy="456.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M178.9688,462.1406 Q178.3906,462.4375 177.75,462.5781 Q177.1094,462.7344 176.4063,462.7344 Q173.9063,462.7344 172.5781,461.0938 Q171.2656,459.4375 171.2656,456.3125 Q171.2656,453.1875 172.5781,451.5313 Q173.9063,449.875 176.4063,449.875 Q177.1094,449.875 177.75,450.0313 Q178.4063,450.1875 178.9688,450.4844 L178.9688,453.2031 Q178.3438,452.625 177.75,452.3594 Q177.1563,452.0781 176.5313,452.0781 Q175.1875,452.0781 174.5,453.1563 Q173.8125,454.2188 173.8125,456.3125 Q173.8125,458.4063 174.5,459.4844 Q175.1875,460.5469 176.5313,460.5469 Q177.1563,460.5469 177.75,460.2813 Q178.3438,460 178.9688,459.4219 L178.9688,462.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="48" x="190" y="460.6543">ABCD::F</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="246" y="437.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="247" y="449.6387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="162" x2="251" y1="472.5" y2="472.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="162" x2="251" y1="480.5" y2="480.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L8" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L8" xlink:show="new" xlink:title="f" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="201" y="478.5"/>
<ellipse cx="206" cy="483.5" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L8" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L8" xlink:show="new" xlink:title="f" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="167" y="486.5"/>
<ellipse cx="172" cy="491.5" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L8" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L8" xlink:show="new" xlink:title="f" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="23" x="215" y="486.7104">f : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L8" target="_top" title="f" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L8" xlink:show="new" xlink:title="f" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="23" x="181" y="494.7104">f : T</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="196" x2="285" y1="493.3047" y2="493.3047"/>
<rect fill="#FEFECE" filter="url(#fdk7lnbodsfr8)" height="48" id="C_0002304215469403389354" style="stroke: #A80036; stroke-width: 1.5;" width="100" x="267.5" y="312"/>
<ellipse cx="282.5" cy="328" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M285.4688,333.6406 Q284.8906,333.9375 284.25,334.0781 Q283.6094,334.2344 282.9063,334.2344 Q280.4063,334.2344 279.0781,332.5938 Q277.7656,330.9375 277.7656,327.8125 Q277.7656,324.6875 279.0781,323.0313 Q280.4063,321.375 282.9063,321.375 Q283.6094,321.375 284.25,321.5313 Q284.9063,321.6875 285.4688,321.9844 L285.4688,324.7031 Q284.8438,324.125 284.25,323.8594 Q283.6563,323.5781 283.0313,323.5781 Q281.6875,323.5781 281,324.6563 Q280.3125,325.7188 280.3125,327.8125 Q280.3125,329.9063 281,330.9844 Q281.6875,332.0469 283.0313,332.0469 Q283.6563,332.0469 284.25,331.7813 Q284.8438,331.5 285.4688,330.9219 L285.4688,333.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="48" x="296.5" y="332.1543">ABCD::F</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="18" x="352.5" y="309"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="16" x="353.5" y="321.1387">int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="268.5" x2="366.5" y1="344" y2="344"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="268.5" x2="366.5" y1="352" y2="352"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L14" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L14" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fdk7lnbodsfr8)" height="60.8047" id="C_0000519995486237427479" style="stroke: #A80036; stroke-width: 1.5;" width="59" x="403" y="305.5"/>
<ellipse cx="426.55" cy="321.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M429.5188,327.1406 Q428.9406,327.4375 428.3,327.5781 Q427.6594,327.7344 426.9563,327.7344 Q424.4563,327.7344 423.1281,326.0938 Q421.8156,324.4375 421.8156,321.3125 Q421.8156,318.1875 423.1281,316.5313 Q424.4563,314.875 426.9563,314.875 Q427.6594,314.875 428.3,315.0313 Q428.9563,315.1875 429.5188,315.4844 L429.5188,318.2031 Q428.8938,317.625 428.3,317.3594 Q427.7063,317.0781 427.0813,317.0781 Q425.7375,317.0781 425.05,318.1563 Q424.3625,319.2188 424.3625,321.3125 Q424.3625,323.4063 425.05,324.4844 Q425.7375,325.5469 427.0813,325.5469 Q427.7063,325.5469 428.3,325.2813 Q428.8938,325 429.5188,324.4219 L429.5188,327.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="442.45" y="325.6543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="404" x2="461" y1="337.5" y2="337.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L7" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L7" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fl6589i5zpeut)" height="48" id="C_0002304215469403389354" style="stroke: #A80036; stroke-width: 1.5;" width="100" x="233.5" y="312"/>
<ellipse cx="248.5" cy="328" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M251.4688,333.6406 Q250.8906,333.9375 250.25,334.0781 Q249.6094,334.2344 248.9063,334.2344 Q246.4063,334.2344 245.0781,332.5938 Q243.7656,330.9375 243.7656,327.8125 Q243.7656,324.6875 245.0781,323.0313 Q246.4063,321.375 248.9063,321.375 Q249.6094,321.375 250.25,321.5313 Q250.9063,321.6875 251.4688,321.9844 L251.4688,324.7031 Q250.8438,324.125 250.25,323.8594 Q249.6563,323.5781 249.0313,323.5781 Q247.6875,323.5781 247,324.6563 Q246.3125,325.7188 246.3125,327.8125 Q246.3125,329.9063 247,330.9844 Q247.6875,332.0469 249.0313,332.0469 Q249.6563,332.0469 250.25,331.7813 Q250.8438,331.5 251.4688,330.9219 L251.4688,333.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="48" x="262.5" y="332.1543">ABCD::F</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="18" x="318.5" y="309"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="16" x="319.5" y="321.1387">int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="234.5" x2="332.5" y1="344" y2="344"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="234.5" x2="332.5" y1="352" y2="352"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L15" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.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="409" y="343.5"/>
<ellipse cx="414" cy="348.5" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L14" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L14" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fl6589i5zpeut)" height="60.8047" id="C_0000519995486237427479" style="stroke: #A80036; stroke-width: 1.5;" width="59" x="369" y="305.5"/>
<ellipse cx="392.55" cy="321.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M395.5188,327.1406 Q394.9406,327.4375 394.3,327.5781 Q393.6594,327.7344 392.9563,327.7344 Q390.4563,327.7344 389.1281,326.0938 Q387.8156,324.4375 387.8156,321.3125 Q387.8156,318.1875 389.1281,316.5313 Q390.4563,314.875 392.9563,314.875 Q393.6594,314.875 394.3,315.0313 Q394.9563,315.1875 395.5188,315.4844 L395.5188,318.2031 Q394.8938,317.625 394.3,317.3594 Q393.7063,317.0781 393.0813,317.0781 Q391.7375,317.0781 391.05,318.1563 Q390.3625,319.2188 390.3625,321.3125 Q390.3625,323.4063 391.05,324.4844 Q391.7375,325.5469 393.0813,325.5469 Q393.7063,325.5469 394.3,325.2813 Q394.8938,325 395.5188,324.4219 L395.5188,327.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="408.45" y="325.6543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="370" x2="427" y1="337.5" y2="337.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="370" x2="427" y1="345.5" y2="345.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L15" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L15" xlink:show="new" xlink:title="a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="423" y="351.7104">a : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L15" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.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="375" y="351.5"/>
<ellipse cx="380" cy="356.5" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="404" x2="461" y1="358.3047" y2="358.3047"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L18" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L18" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fdk7lnbodsfr8)" height="60.8047" id="C_0001177487653597650440" style="stroke: #A80036; stroke-width: 1.5;" width="59" x="497" y="305.5"/>
<ellipse cx="520.55" cy="321.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M523.5188,327.1406 Q522.9406,327.4375 522.3,327.5781 Q521.6594,327.7344 520.9563,327.7344 Q518.4563,327.7344 517.1281,326.0938 Q515.8156,324.4375 515.8156,321.3125 Q515.8156,318.1875 517.1281,316.5313 Q518.4563,314.875 520.9563,314.875 Q521.6594,314.875 522.3,315.0313 Q522.9563,315.1875 523.5188,315.4844 L523.5188,318.2031 Q522.8938,317.625 522.3,317.3594 Q521.7063,317.0781 521.0813,317.0781 Q519.7375,317.0781 519.05,318.1563 Q518.3625,319.2188 518.3625,321.3125 Q518.3625,323.4063 519.05,324.4844 Q519.7375,325.5469 521.0813,325.5469 Q521.7063,325.5469 522.3,325.2813 Q522.8938,325 523.5188,324.4219 L523.5188,327.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="536.45" y="325.6543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="498" x2="555" y1="337.5" y2="337.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L15" target="_top" title="a" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L15" xlink:show="new" xlink:title="a" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="389" y="359.7104">a : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L19" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L19" xlink:show="new" xlink:title="b" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="503" y="343.5"/>
<ellipse cx="508" cy="348.5" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L18" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L18" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fl6589i5zpeut)" height="60.8047" id="C_0001177487653597650440" style="stroke: #A80036; stroke-width: 1.5;" width="59" x="463" y="305.5"/>
<ellipse cx="486.55" cy="321.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M489.5188,327.1406 Q488.9406,327.4375 488.3,327.5781 Q487.6594,327.7344 486.9563,327.7344 Q484.4563,327.7344 483.1281,326.0938 Q481.8156,324.4375 481.8156,321.3125 Q481.8156,318.1875 483.1281,316.5313 Q484.4563,314.875 486.9563,314.875 Q487.6594,314.875 488.3,315.0313 Q488.9563,315.1875 489.5188,315.4844 L489.5188,318.2031 Q488.8938,317.625 488.3,317.3594 Q487.7063,317.0781 487.0813,317.0781 Q485.7375,317.0781 485.05,318.1563 Q484.3625,319.2188 484.3625,321.3125 Q484.3625,323.4063 485.05,324.4844 Q485.7375,325.5469 487.0813,325.5469 Q487.7063,325.5469 488.3,325.2813 Q488.8938,325 489.5188,324.4219 L489.5188,327.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="502.45" y="325.6543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="464" x2="521" y1="337.5" y2="337.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="464" x2="521" y1="345.5" y2="345.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L19" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L19" xlink:show="new" xlink:title="b" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="517" y="351.7104">b : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L19" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L19" xlink:show="new" xlink:title="b" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="469" y="351.5"/>
<ellipse cx="474" cy="356.5" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="498" x2="555" y1="358.3047" y2="358.3047"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L22" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L22" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fdk7lnbodsfr8)" height="60.8047" id="C_0001028245818073128358" style="stroke: #A80036; stroke-width: 1.5;" width="58" x="591.5" y="305.5"/>
<ellipse cx="614.6" cy="321.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M617.5688,327.1406 Q616.9906,327.4375 616.35,327.5781 Q615.7094,327.7344 615.0063,327.7344 Q612.5063,327.7344 611.1781,326.0938 Q609.8656,324.4375 609.8656,321.3125 Q609.8656,318.1875 611.1781,316.5313 Q612.5063,314.875 615.0063,314.875 Q615.7094,314.875 616.35,315.0313 Q617.0063,315.1875 617.5688,315.4844 L617.5688,318.2031 Q616.9438,317.625 616.35,317.3594 Q615.7563,317.0781 615.1313,317.0781 Q613.7875,317.0781 613.1,318.1563 Q612.4125,319.2188 612.4125,321.3125 Q612.4125,323.4063 613.1,324.4844 Q613.7875,325.5469 615.1313,325.5469 Q615.7563,325.5469 616.35,325.2813 Q616.9438,325 617.5688,324.4219 L617.5688,327.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="630.4" y="325.6543">C</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="592.5" x2="648.5" y1="337.5" y2="337.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L19" target="_top" title="b" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L19" xlink:show="new" xlink:title="b" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="483" y="359.7104">b : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L23" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L23" xlink:show="new" xlink:title="c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="597.5" y="343.5"/>
<ellipse cx="602.5" cy="348.5" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L22" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L22" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fl6589i5zpeut)" height="60.8047" id="C_0001028245818073128358" style="stroke: #A80036; stroke-width: 1.5;" width="58" x="557.5" y="305.5"/>
<ellipse cx="580.6" cy="321.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M583.5688,327.1406 Q582.9906,327.4375 582.35,327.5781 Q581.7094,327.7344 581.0063,327.7344 Q578.5063,327.7344 577.1781,326.0938 Q575.8656,324.4375 575.8656,321.3125 Q575.8656,318.1875 577.1781,316.5313 Q578.5063,314.875 581.0063,314.875 Q581.7094,314.875 582.35,315.0313 Q583.0063,315.1875 583.5688,315.4844 L583.5688,318.2031 Q582.9438,317.625 582.35,317.3594 Q581.7563,317.0781 581.1313,317.0781 Q579.7875,317.0781 579.1,318.1563 Q578.4125,319.2188 578.4125,321.3125 Q578.4125,323.4063 579.1,324.4844 Q579.7875,325.5469 581.1313,325.5469 Q581.7563,325.5469 582.35,325.2813 Q582.9438,325 583.5688,324.4219 L583.5688,327.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="596.4" y="325.6543">C</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="558.5" x2="614.5" y1="337.5" y2="337.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="558.5" x2="614.5" y1="345.5" y2="345.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L23" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L23" xlink:show="new" xlink:title="c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="32" x="611.5" y="351.7104">c : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L23" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L23" xlink:show="new" xlink:title="c" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="563.5" y="351.5"/>
<ellipse cx="568.5" cy="356.5" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="592.5" x2="648.5" y1="358.3047" y2="358.3047"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L28" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L28" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fdk7lnbodsfr8)" height="73.6094" id="C_0000409373870621931875" style="stroke: #A80036; stroke-width: 1.5;" width="155" x="6" y="299"/>
<ellipse cx="74.75" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M77.7188,320.6406 Q77.1406,320.9375 76.5,321.0781 Q75.8594,321.2344 75.1563,321.2344 Q72.6563,321.2344 71.3281,319.5938 Q70.0156,317.9375 70.0156,314.8125 Q70.0156,311.6875 71.3281,310.0313 Q72.6563,308.375 75.1563,308.375 Q75.8594,308.375 76.5,308.5313 Q77.1563,308.6875 77.7188,308.9844 L77.7188,311.7031 Q77.0938,311.125 76.5,310.8594 Q75.9063,310.5781 75.2813,310.5781 Q73.9375,310.5781 73.25,311.6563 Q72.5625,312.7188 72.5625,314.8125 Q72.5625,316.9063 73.25,317.9844 Q73.9375,319.0469 75.2813,319.0469 Q75.9063,319.0469 76.5,318.7813 Q77.0938,318.5 77.7188,317.9219 L77.7188,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="95.25" y="319.1543">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="160" y1="331" y2="331"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L23" target="_top" title="c" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L23" xlink:show="new" xlink:title="c" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="32" x="577.5" y="359.7104">c : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L29" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L29" xlink:show="new" xlink:title="d" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="337"/>
<ellipse cx="17" cy="342" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L28" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L28" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fl6589i5zpeut)" height="73.6094" id="C_0000409373870621931875" style="stroke: #A80036; stroke-width: 1.5;" width="121" x="6" y="299"/>
<ellipse cx="57.75" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M60.7188,320.6406 Q60.1406,320.9375 59.5,321.0781 Q58.8594,321.2344 58.1563,321.2344 Q55.6563,321.2344 54.3281,319.5938 Q53.0156,317.9375 53.0156,314.8125 Q53.0156,311.6875 54.3281,310.0313 Q55.6563,308.375 58.1563,308.375 Q58.8594,308.375 59.5,308.5313 Q60.1563,308.6875 60.7188,308.9844 L60.7188,311.7031 Q60.0938,311.125 59.5,310.8594 Q58.9063,310.5781 58.2813,310.5781 Q56.9375,310.5781 56.25,311.6563 Q55.5625,312.7188 55.5625,314.8125 Q55.5625,316.9063 56.25,317.9844 Q56.9375,319.0469 58.2813,319.0469 Q58.9063,319.0469 59.5,318.7813 Q60.0938,318.5 60.7188,317.9219 L60.7188,320.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="78.25" y="319.1543">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="126" y1="331" y2="331"/>
<ellipse cx="17" cy="342" 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="95" x="26" y="345.2104">print(R * r) : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="126" y1="351.8047" y2="351.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L29" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L29" xlink:show="new" xlink:title="d" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="26" y="345.2104">d : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L29" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L29" xlink:show="new" xlink:title="d" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="357.8047"/>
<ellipse cx="17" cy="362.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="160" y1="351.8047" y2="351.8047"/>
<ellipse cx="17" cy="362.8047" 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="129" x="26" y="366.0151">print(class R * r) : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L33" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L33" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fdk7lnbodsfr8)" height="60.8047" id="C_0000864055993755439230" style="stroke: #A80036; stroke-width: 1.5;" width="52" x="829.5" y="440.5"/>
<ellipse cx="844.95" cy="456.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M847.9188,462.1406 Q847.3406,462.4375 846.7,462.5781 Q846.0594,462.7344 845.3563,462.7344 Q842.8563,462.7344 841.5281,461.0938 Q840.2156,459.4375 840.2156,456.3125 Q840.2156,453.1875 841.5281,451.5313 Q842.8563,449.875 845.3563,449.875 Q846.0594,449.875 846.7,450.0313 Q847.3563,450.1875 847.9188,450.4844 L847.9188,453.2031 Q847.2938,452.625 846.7,452.3594 Q846.1063,452.0781 845.4813,452.0781 Q844.1375,452.0781 843.45,453.1563 Q842.7625,454.2188 842.7625,456.3125 Q842.7625,458.4063 843.45,459.4844 Q844.1375,460.5469 845.4813,460.5469 Q846.1063,460.5469 846.7,460.2813 Q847.2938,460 847.9188,459.4219 L847.9188,462.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="859.05" y="460.6543">E</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="875.5" y="437.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="876.5" y="449.6387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="830.5" x2="880.5" y1="472.5" y2="472.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L29" target="_top" title="d" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L29" xlink:show="new" xlink:title="d" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="26" y="366.0151">d : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L34" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L34" xlink:show="new" xlink:title="e" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="835.5" y="478.5"/>
<ellipse cx="840.5" cy="483.5" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L33" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L33" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fl6589i5zpeut)" height="60.8047" id="C_0000864055993755439230" style="stroke: #A80036; stroke-width: 1.5;" width="52" x="795.5" y="440.5"/>
<ellipse cx="810.95" cy="456.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M813.9188,462.1406 Q813.3406,462.4375 812.7,462.5781 Q812.0594,462.7344 811.3563,462.7344 Q808.8563,462.7344 807.5281,461.0938 Q806.2156,459.4375 806.2156,456.3125 Q806.2156,453.1875 807.5281,451.5313 Q808.8563,449.875 811.3563,449.875 Q812.0594,449.875 812.7,450.0313 Q813.3563,450.1875 813.9188,450.4844 L813.9188,453.2031 Q813.2938,452.625 812.7,452.3594 Q812.1063,452.0781 811.4813,452.0781 Q810.1375,452.0781 809.45,453.1563 Q808.7625,454.2188 808.7625,456.3125 Q808.7625,458.4063 809.45,459.4844 Q810.1375,460.5469 811.4813,460.5469 Q812.1063,460.5469 812.7,460.2813 Q813.2938,460 813.9188,459.4219 L813.9188,462.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="825.05" y="460.6543">E</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="841.5" y="437.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="842.5" y="449.6387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="796.5" x2="846.5" y1="472.5" y2="472.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="796.5" x2="846.5" y1="480.5" y2="480.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L34" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L34" xlink:show="new" xlink:title="e" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="26" x="849.5" y="486.7104">e : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L34" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L34" xlink:show="new" xlink:title="e" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="801.5" y="486.5"/>
<ellipse cx="806.5" cy="491.5" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="830.5" x2="880.5" y1="493.3047" y2="493.3047"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L37" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L37" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fdk7lnbodsfr8)" height="73.6094" id="C_0000205927019127027617" style="stroke: #A80036; stroke-width: 1.5;" width="174" x="984.5" y="434"/>
<ellipse cx="1035.75" cy="450" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1038.7188,455.6406 Q1038.1406,455.9375 1037.5,456.0781 Q1036.8594,456.2344 1036.1563,456.2344 Q1033.6563,456.2344 1032.3281,454.5938 Q1031.0156,452.9375 1031.0156,449.8125 Q1031.0156,446.6875 1032.3281,445.0313 Q1033.6563,443.375 1036.1563,443.375 Q1036.8594,443.375 1037.5,443.5313 Q1038.1563,443.6875 1038.7188,443.9844 L1038.7188,446.7031 Q1038.0938,446.125 1037.5,445.8594 Q1036.9063,445.5781 1036.2813,445.5781 Q1034.9375,445.5781 1034.25,446.6563 Q1033.5625,447.7188 1033.5625,449.8125 Q1033.5625,451.9063 1034.25,452.9844 Q1034.9375,454.0469 1036.2813,454.0469 Q1036.9063,454.0469 1037.5,453.7813 Q1038.0938,453.5 1038.7188,452.9219 L1038.7188,455.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="1056.25" y="454.1543">G</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="52" x="1109.5" y="431"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="50" x="1110.5" y="443.1387">T,Args...</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="985.5" x2="1157.5" y1="466" y2="466"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L34" target="_top" title="e" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L34" xlink:show="new" xlink:title="e" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="26" x="815.5" y="494.7104">e : T</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L38" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L38" xlink:show="new" xlink:title="g" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="990.5" y="472"/>
<ellipse cx="995.5" cy="477" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L37" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L37" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fl6589i5zpeut)" height="73.6094" id="C_0000205927019127027617" style="stroke: #A80036; stroke-width: 1.5;" width="174" x="950.5" y="434"/>
<ellipse cx="1001.75" cy="450" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1004.7188,455.6406 Q1004.1406,455.9375 1003.5,456.0781 Q1002.8594,456.2344 1002.1563,456.2344 Q999.6563,456.2344 998.3281,454.5938 Q997.0156,452.9375 997.0156,449.8125 Q997.0156,446.6875 998.3281,445.0313 Q999.6563,443.375 1002.1563,443.375 Q1002.8594,443.375 1003.5,443.5313 Q1004.1563,443.6875 1004.7188,443.9844 L1004.7188,446.7031 Q1004.0938,446.125 1003.5,445.8594 Q1002.9063,445.5781 1002.2813,445.5781 Q1000.9375,445.5781 1000.25,446.6563 Q999.5625,447.7188 999.5625,449.8125 Q999.5625,451.9063 1000.25,452.9844 Q1000.9375,454.0469 1002.2813,454.0469 Q1002.9063,454.0469 1003.5,453.7813 Q1004.0938,453.5 1004.7188,452.9219 L1004.7188,455.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="1022.25" y="454.1543">G</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="52" x="1075.5" y="431"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="50" x="1076.5" y="443.1387">T,Args...</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="951.5" x2="1123.5" y1="466" y2="466"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="951.5" x2="1123.5" y1="474" y2="474"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L38" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L38" xlink:show="new" xlink:title="g" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="26" x="1004.5" y="480.2104">g : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L39" target="_top" title="args" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L39" xlink:show="new" xlink:title="args" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="956.5" y="480"/>
<ellipse cx="961.5" cy="485" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L39" target="_top" title="args" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L39" xlink:show="new" xlink:title="args" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="990.5" y="484.8047"/>
<ellipse cx="995.5" cy="489.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L39" target="_top" title="args" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L39" xlink:show="new" xlink:title="args" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="148" x="970.5" y="488.2104">args : std::tuple&lt;Args...&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L39" target="_top" title="args" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L39" xlink:show="new" xlink:title="args" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="148" x="1004.5" y="493.0151">args : std::tuple&lt;Args...&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L38" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L38" xlink:show="new" xlink:title="g" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="956.5" y="492.8047"/>
<ellipse cx="961.5" cy="497.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="985.5" x2="1157.5" y1="499.6094" y2="499.6094"/>
<rect fill="#FEFECE" filter="url(#fdk7lnbodsfr8)" height="48" id="C_0001977486318799565722" style="stroke: #A80036; stroke-width: 1.5;" width="60" x="825.5" y="312"/>
<ellipse cx="840.5" cy="328" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M843.4688,333.6406 Q842.8906,333.9375 842.25,334.0781 Q841.6094,334.2344 840.9063,334.2344 Q838.4063,334.2344 837.0781,332.5938 Q835.7656,330.9375 835.7656,327.8125 Q835.7656,324.6875 837.0781,323.0313 Q838.4063,321.375 840.9063,321.375 Q841.6094,321.375 842.25,321.5313 Q842.9063,321.6875 843.4688,321.9844 L843.4688,324.7031 Q842.8438,324.125 842.25,323.8594 Q841.6563,323.5781 841.0313,323.5781 Q839.6875,323.5781 839,324.6563 Q838.3125,325.7188 838.3125,327.8125 Q838.3125,329.9063 839,330.9844 Q839.6875,332.0469 841.0313,332.0469 Q841.6563,332.0469 842.25,331.7813 Q842.8438,331.5 843.4688,330.9219 L843.4688,333.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="854.5" y="332.1543">E</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="18" x="870.5" y="309"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="16" x="871.5" y="321.1387">int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="826.5" x2="884.5" y1="344" y2="344"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="826.5" x2="884.5" y1="352" y2="352"/>
<rect fill="#FEFECE" filter="url(#fdk7lnbodsfr8)" height="48" id="C_0001526733274613822014" style="stroke: #A80036; stroke-width: 1.5;" width="159" x="992" y="312"/>
<ellipse cx="1007" cy="328" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1009.9688,333.6406 Q1009.3906,333.9375 1008.75,334.0781 Q1008.1094,334.2344 1007.4063,334.2344 Q1004.9063,334.2344 1003.5781,332.5938 Q1002.2656,330.9375 1002.2656,327.8125 Q1002.2656,324.6875 1003.5781,323.0313 Q1004.9063,321.375 1007.4063,321.375 Q1008.1094,321.375 1008.75,321.5313 Q1009.4063,321.6875 1009.9688,321.9844 L1009.9688,324.7031 Q1009.3438,324.125 1008.75,323.8594 Q1008.1563,323.5781 1007.5313,323.5781 Q1006.1875,323.5781 1005.5,324.6563 Q1004.8125,325.7188 1004.8125,327.8125 Q1004.8125,329.9063 1005.5,330.9844 Q1006.1875,332.0469 1007.5313,332.0469 Q1008.1563,332.0469 1008.75,331.7813 Q1009.3438,331.5 1009.9688,330.9219 L1009.9688,333.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="1021" y="332.1543">G</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="116" x="1038" y="309"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="114" x="1039" y="321.1387">int,float,std::string</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="993" x2="1150" y1="344" y2="344"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="993" x2="1150" y1="352" y2="352"/>
<rect fill="#FEFECE" filter="url(#fdk7lnbodsfr8)" height="48" id="C_0000531523220915557686" style="stroke: #A80036; stroke-width: 1.5;" width="106" x="684.5" y="312"/>
<ellipse cx="699.5" cy="328" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M702.4688,333.6406 Q701.8906,333.9375 701.25,334.0781 Q700.6094,334.2344 699.9063,334.2344 Q697.4063,334.2344 696.0781,332.5938 Q694.7656,330.9375 694.7656,327.8125 Q694.7656,324.6875 696.0781,323.0313 Q697.4063,321.375 699.9063,321.375 Q700.6094,321.375 701.25,321.5313 Q701.9063,321.6875 702.4688,321.9844 L702.4688,324.7031 Q701.8438,324.125 701.25,323.8594 Q700.6563,323.5781 700.0313,323.5781 Q698.6875,323.5781 698,324.6563 Q697.3125,325.7188 697.3125,327.8125 Q697.3125,329.9063 698,330.9844 Q698.6875,332.0469 700.0313,332.0469 Q700.6563,332.0469 701.25,331.7813 Q701.8438,331.5 702.4688,330.9219 L702.4688,333.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="713.5" y="332.1543">E</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="64" x="729.5" y="309"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="62" x="730.5" y="321.1387">std::string</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="685.5" x2="789.5" y1="344" y2="344"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="685.5" x2="789.5" y1="352" y2="352"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L43" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L43" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fdk7lnbodsfr8)" height="214.4609" id="C_0002198686676355573844" style="stroke: #A80036; stroke-width: 1.5;" width="233" x="410" y="8"/>
<ellipse cx="518.25" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M521.2188,29.6406 Q520.6406,29.9375 520,30.0781 Q519.3594,30.2344 518.6563,30.2344 Q516.1563,30.2344 514.8281,28.5938 Q513.5156,26.9375 513.5156,23.8125 Q513.5156,20.6875 514.8281,19.0313 Q516.1563,17.375 518.6563,17.375 Q519.3594,17.375 520,17.5313 Q520.6563,17.6875 521.2188,17.9844 L521.2188,20.7031 Q520.5938,20.125 520,19.8594 Q519.4063,19.5781 518.7813,19.5781 Q517.4375,19.5781 516.75,20.6563 Q516.0625,21.7188 516.0625,23.8125 Q516.0625,25.9063 516.75,26.9844 Q517.4375,28.0469 518.7813,28.0469 Q519.4063,28.0469 520,27.7813 Q520.5938,27.5 521.2188,26.9219 L521.2188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="538.75" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="411" x2="642" y1="40" y2="40"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L38" target="_top" title="g" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L38" xlink:show="new" xlink:title="g" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="26" x="970.5" y="501.0151">g : T</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L60" target="_top" title="gintstring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L60" xlink:show="new" xlink:title="gintstring" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="416" y="46"/>
<ellipse cx="421" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L33" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L33" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fl6589i5zpeut)" height="48" id="C_0001977486318799565722" style="stroke: #A80036; stroke-width: 1.5;" width="60" x="791.5" y="312"/>
<ellipse cx="806.5" cy="328" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M809.4688,333.6406 Q808.8906,333.9375 808.25,334.0781 Q807.6094,334.2344 806.9063,334.2344 Q804.4063,334.2344 803.0781,332.5938 Q801.7656,330.9375 801.7656,327.8125 Q801.7656,324.6875 803.0781,323.0313 Q804.4063,321.375 806.9063,321.375 Q807.6094,321.375 808.25,321.5313 Q808.9063,321.6875 809.4688,321.9844 L809.4688,324.7031 Q808.8438,324.125 808.25,323.8594 Q807.6563,323.5781 807.0313,323.5781 Q805.6875,323.5781 805,324.6563 Q804.3125,325.7188 804.3125,327.8125 Q804.3125,329.9063 805,330.9844 Q805.6875,332.0469 807.0313,332.0469 Q807.6563,332.0469 808.25,331.7813 Q808.8438,331.5 809.4688,330.9219 L809.4688,333.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="820.5" y="332.1543">E</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="18" x="836.5" y="309"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="16" x="837.5" y="321.1387">int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="792.5" x2="850.5" y1="344" y2="344"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="792.5" x2="850.5" y1="352" y2="352"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L60" target="_top" title="gintstring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L60" xlink:show="new" xlink:title="gintstring" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="199" x="430" y="54.2104">gintstring : G&lt;int,float,std::string&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L37" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L37" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fl6589i5zpeut)" height="48" id="C_0001526733274613822014" style="stroke: #A80036; stroke-width: 1.5;" width="159" x="958" y="312"/>
<ellipse cx="973" cy="328" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M975.9688,333.6406 Q975.3906,333.9375 974.75,334.0781 Q974.1094,334.2344 973.4063,334.2344 Q970.9063,334.2344 969.5781,332.5938 Q968.2656,330.9375 968.2656,327.8125 Q968.2656,324.6875 969.5781,323.0313 Q970.9063,321.375 973.4063,321.375 Q974.1094,321.375 974.75,321.5313 Q975.4063,321.6875 975.9688,321.9844 L975.9688,324.7031 Q975.3438,324.125 974.75,323.8594 Q974.1563,323.5781 973.5313,323.5781 Q972.1875,323.5781 971.5,324.6563 Q970.8125,325.7188 970.8125,327.8125 Q970.8125,329.9063 971.5,330.9844 Q972.1875,332.0469 973.5313,332.0469 Q974.1563,332.0469 974.75,331.7813 Q975.3438,331.5 975.9688,330.9219 L975.9688,333.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="987" y="332.1543">G</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="116" x="1004" y="309"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="114" x="1005" y="321.1387">int,float,std::string</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="959" x2="1116" y1="344" y2="344"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="959" x2="1116" y1="352" y2="352"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L63" target="_top" title="estring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L63" xlink:show="new" xlink:title="estring" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="416" y="58.8047"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="418" y="60.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L33" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L33" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fl6589i5zpeut)" height="48" id="C_0000531523220915557686" style="stroke: #A80036; stroke-width: 1.5;" width="106" x="650.5" y="312"/>
<ellipse cx="665.5" cy="328" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M668.4688,333.6406 Q667.8906,333.9375 667.25,334.0781 Q666.6094,334.2344 665.9063,334.2344 Q663.4063,334.2344 662.0781,332.5938 Q660.7656,330.9375 660.7656,327.8125 Q660.7656,324.6875 662.0781,323.0313 Q663.4063,321.375 665.9063,321.375 Q666.6094,321.375 667.25,321.5313 Q667.9063,321.6875 668.4688,321.9844 L668.4688,324.7031 Q667.8438,324.125 667.25,323.8594 Q666.6563,323.5781 666.0313,323.5781 Q664.6875,323.5781 664,324.6563 Q663.3125,325.7188 663.3125,327.8125 Q663.3125,329.9063 664,330.9844 Q664.6875,332.0469 666.0313,332.0469 Q666.6563,332.0469 667.25,331.7813 Q667.8438,331.5 668.4688,330.9219 L668.4688,333.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="679.5" y="332.1543">E</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="64" x="695.5" y="309"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="62" x="696.5" y="321.1387">std::string</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="651.5" x2="755.5" y1="344" y2="344"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="651.5" x2="755.5" y1="352" y2="352"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L63" target="_top" title="estring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00013/t00013.cc#L63" xlink:show="new" xlink:title="estring" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="136" x="430" y="67.0151">estring : E&lt;std::string&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L43" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L43" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fl6589i5zpeut)" height="214.4609" id="C_0002198686676355573844" style="stroke: #A80036; stroke-width: 1.5;" width="242" x="371.5" y="8"/>
<ellipse cx="484.25" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M487.2188,29.6406 Q486.6406,29.9375 486,30.0781 Q485.3594,30.2344 484.6563,30.2344 Q482.1563,30.2344 480.8281,28.5938 Q479.5156,26.9375 479.5156,23.8125 Q479.5156,20.6875 480.8281,19.0313 Q482.1563,17.375 484.6563,17.375 Q485.3594,17.375 486,17.5313 Q486.6563,17.6875 487.2188,17.9844 L487.2188,20.7031 Q486.5938,20.125 486,19.8594 Q485.4063,19.5781 484.7813,19.5781 Q483.4375,19.5781 482.75,20.6563 Q482.0625,21.7188 482.0625,23.8125 Q482.0625,25.9063 482.75,26.9844 Q483.4375,28.0469 484.7813,28.0469 Q485.4063,28.0469 486,27.7813 Q486.5938,27.5 487.2188,26.9219 L487.2188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="504.75" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="372.5" x2="612.5" y1="40" y2="40"/>
<ellipse cx="382.5" cy="51" 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="93" x="391.5" y="54.2104">get_a(A * a) : int</text>
<ellipse cx="382.5" cy="63.8047" 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="98" x="391.5" y="67.0151">get_b(B &amp; b) : int</text>
<ellipse cx="382.5" cy="76.6094" 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="82" x="391.5" y="79.8198">get_c(C c) : int</text>
<ellipse cx="382.5" cy="89.4141" 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="170" x="391.5" y="92.6245">get_const_b(const B &amp; b) : int</text>
<ellipse cx="382.5" cy="102.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="108" x="391.5" y="105.4292">get_d(D &amp;&amp; d) : int</text>
<ellipse cx="382.5" cy="115.0234" 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="115" x="391.5" y="118.2339">get_d2(D &amp;&amp; d) : int</text>
<ellipse cx="382.5" cy="127.8281" 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="126" x="391.5" y="131.0386">get_e&lt;T&gt;(E&lt;T&gt; e) : T</text>
<ellipse cx="382.5" cy="140.6328" 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="168" x="391.5" y="143.8433">get_f&lt;T&gt;(const F&lt;T&gt; &amp; f) : T</text>
<ellipse cx="382.5" cy="153.4375" 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="184" x="391.5" y="156.6479">get_int_e(const E&lt;int&gt; &amp; e) : int</text>
<ellipse cx="382.5" cy="166.2422" 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="156" x="391.5" y="169.4526">get_int_e2(E&lt;int&gt; &amp; e) : int</text>
<ellipse cx="382.5" cy="179.0469" 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="216" x="391.5" y="182.2573">get_int_f(const ABCD::F&lt;int&gt; &amp; f) : int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="372.5" x2="612.5" y1="188.8516" y2="188.8516"/>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="411" x2="642" y1="73.6094" y2="73.6094"/>
<ellipse cx="421" cy="84.6094" 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="130" x="430" y="87.8198">get_a(struct A * a) : int</text>
<ellipse cx="421" cy="97.4141" 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="135" x="430" y="100.6245">get_b(struct B &amp; b) : int</text>
<ellipse cx="421" cy="110.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="207" x="430" y="113.4292">get_const_b(const struct B &amp; b) : int</text>
<ellipse cx="421" cy="123.0234" 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="119" x="430" y="126.2339">get_c(struct C c) : int</text>
<ellipse cx="421" cy="135.8281" 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="145" x="430" y="139.0386">get_d(struct D &amp;&amp; d) : int</text>
<ellipse cx="421" cy="148.6328" 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="152" x="430" y="151.8433">get_d2(struct D &amp;&amp; d) : int</text>
<ellipse cx="421" cy="161.4375" 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="184" x="430" y="164.6479">get_int_e(const E&lt;int&gt; &amp; e) : int</text>
<ellipse cx="421" cy="174.2422" 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="156" x="430" y="177.4526">get_int_e2(E&lt;int&gt; &amp; e) : int</text>
<ellipse cx="421" cy="187.0469" 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="177" x="430" y="190.2573">get_int_f(const F&lt;int&gt; &amp; f) : int</text>
<ellipse cx="421" cy="199.8516" 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="101" x="430" y="203.062">get_e(E&lt;T&gt; e) : T</text>
<ellipse cx="421" cy="212.6563" 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="143" x="430" y="215.8667">get_f(const F&lt;T&gt; &amp; f) : T</text>
<path d="M304.09,360.17 C294.11,377.41 280.14,401.53 267.84,422.78 " fill="none" id="C_0002304215469403389354-&gt;C_0000952770730316239752" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="273.89,426.3,257.81,440.1,261.77,419.28,273.89,426.3" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M139.84,298.99 C160.26,283.21 183.59,265.29 206.5,252 C269.29,215.57 343.7,184.47 405.09,161.25 " fill="none" id="C_0000409373870621931875-&gt;C_0002198686676355573844" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="409.86,159.45,400.0265,158.901,405.1848,161.2228,402.863,166.3812,409.86,159.45" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M409.88,148.52 C338.32,172.49 246.59,208.43 171.5,252 C150.2,264.36 128.54,280.71 111.67,295.63 " fill="none" id="C_0002198686676355573844-&gt;C_0000409373870621931875" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="107.93,298.99,117.2955,295.9425,111.6465,295.6452,111.9438,289.9961,107.93,298.99" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M855.5,360.17 C855.5,376.63 855.5,399.36 855.5,419.88 " fill="none" id="C_0001977486318799565722-&gt;C_0000864055993755439230" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="862.5,420.1,855.5,440.1,848.5,420.1,862.5,420.1" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1071.5,360.17 C1071.5,375.01 1071.5,394.95 1071.5,413.77 " fill="none" id="C_0001526733274613822014-&gt;C_0000205927019127027617" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="1078.5,413.83,1071.5,433.83,1064.5,413.83,1078.5,413.83" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M758.05,360.17 C773.99,378.13 796.57,403.57 815.97,425.45 " fill="none" id="C_0000531523220915557686-&gt;C_0000864055993755439230" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="821.37,420.98,829.4,440.59,810.89,430.27,821.37,420.98" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M480.88,222.29 C468.7,250.66 456.4,279.32 447.25,300.64 " fill="none" id="C_0002198686676355573844-&gt;C_0000519995486237427479" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="445.23,305.34,452.4519,298.6434,447.1996,300.7443,445.0987,295.492,445.23,305.34" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M526.5,222.29 C526.5,250.42 526.5,278.84 526.5,300.1 " fill="none" id="C_0002198686676355573844-&gt;C_0001177487653597650440" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="526.5,305.34,530.5,296.34,526.5,300.34,522.5,296.34,526.5,305.34" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M572.12,222.29 C584.3,250.66 596.6,279.32 605.75,300.64 " fill="none" id="C_0002198686676355573844-&gt;C_0001028245818073128358" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="607.77,305.34,607.9013,295.492,605.8004,300.7443,600.5481,298.6434,607.77,305.34" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M643.19,189.5 C694.17,222.25 754.33,261.76 807.5,299 C811.94,302.11 816.56,305.45 821.11,308.78 " fill="none" id="C_0002198686676355573844-&gt;C_0001977486318799565722" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="825.25,311.84,820.396,303.2704,821.2312,308.8652,815.6363,309.7005,825.25,311.84" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M425.06,222.29 C394.58,254.23 363.76,286.53 342.97,308.32 " fill="none" id="C_0002198686676355573844-&gt;C_0002304215469403389354" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="339.46,311.99,348.5716,308.2511,342.9161,308.3768,342.7904,302.7213,339.46,311.99" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M643.07,138.31 C731.12,161.93 846.1,208.83 902.5,299 C929.25,341.77 902.51,399.83 879.79,436.1 " fill="none" id="C_0002198686676355573844-&gt;C_0000864055993755439230" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="877.04,440.41,885.2501,434.9699,879.7272,436.1935,878.5036,430.6705,877.04,440.41" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M409.82,162.31 C351.1,192.1 285,236.97 249.5,299 C225.5,340.93 228.35,398.53 233.62,435.01 " fill="none" id="C_0002198686676355573844-&gt;C_0000952770730316239752" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="234.42,440.24,237.0112,430.7381,233.6629,435.2976,229.1034,431.9494,234.42,440.24" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M656.18,143.29 C745.97,165.24 866.48,200.92 964.5,252 C995.36,268.08 1026.3,293.31 1046.91,311.73 " fill="none" id="C_0002198686676355573844&lt;-C_0001526733274613822014" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="643.44,140.22,648.3318,145.5182,655.1038,143.0404,650.2121,137.7423,643.44,140.22" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="996.5" 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="60" x="1003.5" y="265.0669">gintstring</text>
<path d="M638.06,231.79 C667.53,262.38 696.36,292.3 715.33,311.99 " fill="none" id="C_0002198686676355573844&lt;-C_0000531523220915557686" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="628.91,222.29,630.1866,229.3872,637.2289,230.9385,635.9523,223.8413,628.91,222.29" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="672.5" y="258.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="44" x="682.5" y="265.0669">estring</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L63" target="_top" title="estring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L63" xlink:show="new" xlink:title="estring" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="377.5" y="194.8516"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="379.5" y="196.8516"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L63" target="_top" title="estring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L63" xlink:show="new" xlink:title="estring" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="136" x="391.5" y="203.062">estring : E&lt;std::string&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L60" target="_top" title="gintstring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L60" xlink:show="new" xlink:title="gintstring" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="377.5" y="207.6563"/>
<ellipse cx="382.5" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L60" target="_top" title="gintstring" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00013/t00013.cc#L60" xlink:show="new" xlink:title="gintstring" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="199" x="391.5" y="215.8667">gintstring : G&lt;int,float,std::string&gt;</text>
</a>
<path d="M270.09,360.17 C260.11,377.41 246.14,401.53 233.84,422.78 " fill="none" id="C_0002304215469403389354-&gt;C_0000952770730316239752" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="239.89,426.3,223.81,440.1,227.77,419.28,239.89,426.3" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M115.49,298.63 C132.68,282.78 152.34,264.91 172.5,252 C232.6,213.53 305.37,182.56 366.43,159.94 " fill="none" id="C_0000409373870621931875-&gt;C_0002198686676355573844" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="371.17,158.19,361.3418,157.5521,366.479,159.9205,364.1106,165.0577,371.17,158.19" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M371.44,147.45 C299.82,170.53 209.55,205.88 137.5,252 C118.91,263.9 100.75,280.02 86.98,294.88 " fill="none" id="C_0002198686676355573844-&gt;C_0000409373870621931875" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="83.58,298.63,92.5908,294.6543,86.9405,294.9277,86.6671,289.2775,83.58,298.63" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M821.5,360.17 C821.5,376.63 821.5,399.36 821.5,419.88 " fill="none" id="C_0001977486318799565722-&gt;C_0000864055993755439230" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="828.5,420.1,821.5,440.1,814.5,420.1,828.5,420.1" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1037.5,360.17 C1037.5,375.01 1037.5,394.95 1037.5,413.77 " fill="none" id="C_0001526733274613822014-&gt;C_0000205927019127027617" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="1044.5,413.83,1037.5,433.83,1030.5,413.83,1044.5,413.83" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M724.05,360.17 C739.99,378.13 762.57,403.57 781.97,425.45 " fill="none" id="C_0000531523220915557686-&gt;C_0000864055993755439230" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="787.37,420.98,795.4,440.59,776.89,430.27,787.37,420.98" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M446.88,222.29 C434.7,250.66 422.4,279.32 413.25,300.64 " fill="none" id="C_0002198686676355573844-&gt;C_0000519995486237427479" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="411.23,305.34,418.4519,298.6434,413.1996,300.7443,411.0987,295.492,411.23,305.34" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M492.5,222.29 C492.5,250.42 492.5,278.84 492.5,300.1 " fill="none" id="C_0002198686676355573844-&gt;C_0001177487653597650440" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="492.5,305.34,496.5,296.34,492.5,300.34,488.5,296.34,492.5,305.34" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M538.12,222.29 C550.3,250.66 562.6,279.32 571.75,300.64 " fill="none" id="C_0002198686676355573844-&gt;C_0001028245818073128358" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="573.77,305.34,573.9013,295.492,571.8004,300.7443,566.5481,298.6434,573.77,305.34" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M613.67,192.38 C663.67,224.55 721.88,262.85 773.5,299 C777.94,302.11 782.56,305.45 787.11,308.78 " fill="none" id="C_0002198686676355573844-&gt;C_0001977486318799565722" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="791.25,311.84,786.396,303.2704,787.2312,308.8652,781.6363,309.7005,791.25,311.84" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M391.06,222.29 C360.58,254.23 329.76,286.53 308.97,308.32 " fill="none" id="C_0002198686676355573844-&gt;C_0002304215469403389354" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="305.46,311.99,314.5716,308.2511,308.9161,308.3768,308.7904,302.7213,305.46,311.99" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M613.6,139.54 C701.02,163.54 813.06,210.37 868.5,299 C895.25,341.77 868.51,399.83 845.79,436.1 " fill="none" id="C_0002198686676355573844-&gt;C_0000864055993755439230" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="843.04,440.41,851.2501,434.9699,845.7272,436.1935,844.5036,430.6705,843.04,440.41" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M371.19,164.68 C313.65,194.46 250.07,238.59 215.5,299 C191.5,340.93 194.35,398.53 199.62,435.01 " fill="none" id="C_0002198686676355573844-&gt;C_0000952770730316239752" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="200.42,440.24,203.0112,430.7381,199.6629,435.2976,195.1034,431.9494,200.42,440.24" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M626.37,144.32 C715.69,166.35 833.99,201.71 930.5,252 C961.36,268.08 992.3,293.31 1012.91,311.73 " fill="none" id="C_0002198686676355573844&lt;-C_0001526733274613822014" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="613.69,141.23,618.5761,146.5334,625.3508,144.0629,620.4647,138.7595,613.69,141.23" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="962.5" 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="60" x="969.5" y="265.0669">gintstring</text>
<path d="M604.06,231.79 C633.53,262.38 662.36,292.3 681.33,311.99 " fill="none" id="C_0002198686676355573844&lt;-C_0000531523220915557686" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="594.91,222.29,596.1866,229.3872,603.2289,230.9385,601.9523,223.8413,594.91,222.29" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="638.5" y="258.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="44" x="648.5" y="265.0669">estring</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 42 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: 66 KiB

After

Width:  |  Height:  |  Size: 75 KiB

View File

@@ -23,34 +23,185 @@ 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
![t00015_class](./t00015_class.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": {
"file": "../../tests/t00015/t00015.cc",
"line": 6
},
"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": {
"file": "../../tests/t00015/t00015.cc",
"line": 10
},
"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": {
"file": "../../tests/t00015/t00015.cc",
"line": 14
},
"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": {
"file": "../../tests/t00015/t00015.cc",
"line": 21
},
"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": {
"file": "../../tests/t00015/t00015.cc",
"line": 24
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"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="fzju67s2gofu" width="300%" x="-1" y="-1">
<filter height="300%" id="fuplhihvpatta" 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,40 +9,40 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00015/t00015.cc#L6" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00015/t00015.cc#L6" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzju67s2gofu)" height="48" id="C_0001410694888805149453" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="98" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00015/t00015.cc#L6" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00015/t00015.cc#L6" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuplhihvpatta)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00015/t00015.cc#L11" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00015/t00015.cc#L11" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzju67s2gofu)" height="48" id="C_0000485552648049088863" style="stroke: #A80036; stroke-width: 1.5;" width="150" x="204.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00015/t00015.cc#L10" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00015/t00015.cc#L10" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuplhihvpatta)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00015/t00015.cc#L16" target="_top" title="Anon" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00015/t00015.cc#L16" xlink:show="new" xlink:title="Anon" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzju67s2gofu)" height="48" id="C_0001060731132374575329" style="stroke: #A80036; stroke-width: 1.5;" width="95" x="6" y="116"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00015/t00015.cc#L14" target="_top" title="Anon" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00015/t00015.cc#L14" xlink:show="new" xlink:title="Anon" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuplhihvpatta)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00015/t00015.cc#L24" target="_top" title="Anon" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00015/t00015.cc#L24" xlink:show="new" xlink:title="Anon" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzju67s2gofu)" height="48" id="C_0001797521288354158629" style="stroke: #A80036; stroke-width: 1.5;" width="157" x="136" y="116"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00015/t00015.cc#L21" target="_top" title="Anon" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00015/t00015.cc#L21" xlink:show="new" xlink:title="Anon" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuplhihvpatta)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00015/t00015.cc#L28" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00015/t00015.cc#L28" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzju67s2gofu)" height="48" id="C_0000870882387819356092" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="179" y="224"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00015/t00015.cc#L24" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00015/t00015.cc#L24" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuplhihvpatta)" 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>

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@@ -44,9 +44,260 @@ template <> struct is_numeric<int> {
template <> struct is_numeric<bool> {
enum { value = false };
};
}
}
} // namespace t00016
} // namespace clanguml
```
## Generated UML diagrams
![t00016_class](./t00016_class.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": {
"file": "../../tests/t00016/t00016.cc",
"line": 4
},
"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": {
"file": "../../tests/t00016/t00016.cc",
"line": 8
},
"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": {
"file": "../../tests/t00016/t00016.cc",
"line": 12
},
"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": {
"file": "../../tests/t00016/t00016.cc",
"line": 16
},
"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": {
"file": "../../tests/t00016/t00016.cc",
"line": 20
},
"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": {
"file": "../../tests/t00016/t00016.cc",
"line": 24
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "bool"
}
],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"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:847px;height:200px;" version="1.1" viewBox="0 0 847 200" width="847px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1jpcadjiwvhv0" width="300%" x="-1" y="-1">
<filter height="300%" id="f1xxs3jywznii5" 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,85 +9,87 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00016/t00016.cc#L4" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00016/t00016.cc#L4" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jpcadjiwvhv0)" height="60.8047" id="C_0000214045147845616983" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="367" y="129"/>
<ellipse cx="382" cy="145" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M384.9688,150.6406 Q384.3906,150.9375 383.75,151.0781 Q383.1094,151.2344 382.4063,151.2344 Q379.9063,151.2344 378.5781,149.5938 Q377.2656,147.9375 377.2656,144.8125 Q377.2656,141.6875 378.5781,140.0313 Q379.9063,138.375 382.4063,138.375 Q383.1094,138.375 383.75,138.5313 Q384.4063,138.6875 384.9688,138.9844 L384.9688,141.7031 Q384.3438,141.125 383.75,140.8594 Q383.1563,140.5781 382.5313,140.5781 Q381.1875,140.5781 380.5,141.6563 Q379.8125,142.7188 379.8125,144.8125 Q379.8125,146.9063 380.5,147.9844 Q381.1875,149.0469 382.5313,149.0469 Q383.1563,149.0469 383.75,148.7813 Q384.3438,148.5 384.9688,147.9219 L384.9688,150.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="86" x="396" y="149.1543">is_numeric&lt;&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="368" x2="484" y1="161" y2="161"/>
<ellipse cx="378" 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="387" y="175.2104">value : enum</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="368" x2="484" y1="181.8047" y2="181.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00016/t00016.cc#L4" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00016/t00016.cc#L4" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xxs3jywznii5)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00016/t00016.cc#L8" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00016/t00016.cc#L8" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jpcadjiwvhv0)" height="60.8047" id="C_0000095618295648274199" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="6" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00016/t00016.cc#L8" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00016/t00016.cc#L8" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xxs3jywznii5)" 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">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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00016/t00016.cc#L12" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00016/t00016.cc#L12" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jpcadjiwvhv0)" height="60.8047" id="C_0000979129381790761728" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="171" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00016/t00016.cc#L12" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00016/t00016.cc#L12" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xxs3jywznii5)" 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"/>
<ellipse cx="182" 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" y="54.2104">value : enum</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="172" x2="300" y1="60.8047" y2="60.8047"/>
<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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00016/t00016.cc#L16" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00016/t00016.cc#L16" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jpcadjiwvhv0)" height="60.8047" id="C_0002090787690027341836" style="stroke: #A80036; stroke-width: 1.5;" width="179" x="336.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00016/t00016.cc#L16" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00016/t00016.cc#L16" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xxs3jywznii5)" 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"/>
<ellipse cx="347.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="356.5" y="54.2104">value : enum</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="337.5" x2="514.5" y1="60.8047" y2="60.8047"/>
<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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00016/t00016.cc#L20" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00016/t00016.cc#L20" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jpcadjiwvhv0)" height="60.8047" id="C_0000500603075237446075" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="551" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00016/t00016.cc#L20" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00016/t00016.cc#L20" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xxs3jywznii5)" 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"/>
<ellipse cx="562" 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" y="54.2104">value : enum</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="552" x2="668" y1="60.8047" y2="60.8047"/>
<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>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00016/t00016.cc#L24" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00016/t00016.cc#L24" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jpcadjiwvhv0)" height="60.8047" id="C_0002111316837513419920" style="stroke: #A80036; stroke-width: 1.5;" width="129" x="704.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00016/t00016.cc#L24" target="_top" title="is_numeric" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00016/t00016.cc#L24" xlink:show="new" xlink:title="is_numeric" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xxs3jywznii5)" 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"/>
<ellipse cx="715.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="724.5" y="54.2104">value : enum</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="705.5" x2="832.5" y1="60.8047" y2="60.8047"/>
<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 C218.43,91.49 293.11,115.88 347.8,133.52 " fill="none" id="C_0000095618295648274199-&gt;C_0000214045147845616983" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="350.1,126.9,366.99,139.69,345.81,140.23,350.1,126.9" 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_0000214045147845616983" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<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_0000214045147845616983" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.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_0000214045147845616983" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.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 C625.69,90.54 556.06,114.39 504.15,132.04 " fill="none" id="C_0002111316837513419920-&gt;C_0000214045147845616983" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="506.36,138.68,485.17,138.49,501.86,125.43,506.36,138.68" 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: 15 KiB

After

Width:  |  Height:  |  Size: 15 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="fhxzdem6t3o5e" width="300%" x="-1" y="-1">
<filter height="300%" id="f1e0fdp0kvzla1" 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,133 +9,133 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L5" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L5" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fhxzdem6t3o5e)" height="48" id="C_0000121332093434690887" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L5" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L5" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1e0fdp0kvzla1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L8" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L8" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fhxzdem6t3o5e)" height="48" id="C_0001424864837456200487" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="81" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L7" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L7" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1e0fdp0kvzla1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L11" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L11" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fhxzdem6t3o5e)" height="48" id="C_0002151170391844743478" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="156" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L9" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L9" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1e0fdp0kvzla1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L14" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L14" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fhxzdem6t3o5e)" height="48" id="C_0001378112127131766972" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="231.5" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L11" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L11" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1e0fdp0kvzla1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L17" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L17" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fhxzdem6t3o5e)" height="48" id="C_0001535300935831802489" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="308" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L13" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L13" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1e0fdp0kvzla1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L20" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L20" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fhxzdem6t3o5e)" height="48" id="C_0001803800465279710134" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="383.5" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L15" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L15" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1e0fdp0kvzla1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L23" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L23" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fhxzdem6t3o5e)" height="48" id="C_0001135797791892670246" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="457.5" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L17" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L17" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1e0fdp0kvzla1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L26" target="_top" title="H" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L26" xlink:show="new" xlink:title="H" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fhxzdem6t3o5e)" height="48" id="C_0001243547836571712317" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="533.5" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L19" target="_top" title="H" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L19" xlink:show="new" xlink:title="H" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1e0fdp0kvzla1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L29" target="_top" title="I" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L29" xlink:show="new" xlink:title="I" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fhxzdem6t3o5e)" height="48" id="C_0000387733199705628658" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="609.5" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L21" target="_top" title="I" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L21" xlink:show="new" xlink:title="I" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1e0fdp0kvzla1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L32" target="_top" title="J" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L32" xlink:show="new" xlink:title="J" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fhxzdem6t3o5e)" height="48" id="C_0000747991828672433537" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="679.5" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L23" target="_top" title="J" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L23" xlink:show="new" xlink:title="J" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1e0fdp0kvzla1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L35" target="_top" title="K" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L35" xlink:show="new" xlink:title="K" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fhxzdem6t3o5e)" height="48" id="C_0001783571342994833467" style="stroke: #A80036; stroke-width: 1.5;" width="39" x="749.5" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L25" target="_top" title="K" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L25" xlink:show="new" xlink:title="K" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1e0fdp0kvzla1)" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L38" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L38" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fhxzdem6t3o5e)" height="112.0234" id="C_0000287495916564113342" style="stroke: #A80036; stroke-width: 1.5;" width="515" x="128.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L27" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L27" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1e0fdp0kvzla1)" height="112.0234" id="C_0000287495916564113342" style="stroke: #A80036; stroke-width: 1.5;" width="379" x="196.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="129.5" x2="642.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="197.5" x2="574.5" y1="40" y2="40"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="204.5" y="48"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="353" x="216.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>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="197.5" x2="574.5" y1="60.8047" y2="60.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L49" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="134.5" y="46"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="136.5" y="48"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L38" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="202.5" y="66.8047"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="204.5" y="68.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L49" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="148.5" y="54.2104">some_int : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L38" target="_top" title="some_int" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="216.5" y="75.0151">some_int : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L50" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="134.5" y="58.8047"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="136.5" y="60.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L39" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="202.5" y="79.6094"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="204.5" y="81.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L50" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="134" x="148.5" y="67.0151">some_int_pointer : int *</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L39" target="_top" title="some_int_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="216.5" y="87.8198">some_int_pointer : int *</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L51" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="134.5" y="71.6094"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="136.5" y="73.6094"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L40" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="202.5" y="92.4141"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="204.5" y="94.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L51" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="186" x="148.5" y="79.8198">some_int_pointer_pointer : int **</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L40" target="_top" title="some_int_pointer_pointer" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="216.5" y="100.6245">some_int_pointer_pointer : int **</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L52" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="134.5" y="84.4141"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="136.5" y="86.4141"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L41" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="202.5" y="105.2188"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="204.5" y="107.2188"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00017/t00017.cc#L52" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/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="153" x="148.5" y="92.6245">some_int_reference : int &amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00017/t00017.cc#L41" target="_top" title="some_int_reference" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/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="216.5" y="113.4292">some_int_reference : int &amp;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="129.5" x2="642.5" y1="99.2188" y2="99.2188"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="136.5" y="107.2188"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="489" x="148.5" y="113.4292">R(int &amp; some_int, class C &amp; cc, const class E &amp; ee, class F &amp;&amp; ff, class I *&amp; ii) : void</text>
<path d="M190.44,120.02 C179.59,128.61 169.91,138.53 162,150 C153.6,162.17 156.07,178.21 161.11,191.86 " fill="none" id="C_0000287495916564113342-&gt;C_0002151170391844743478" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M196.38,115.54 C183.12,125.1 171.33,136.48 162,150 C153.6,162.17 156.07,178.21 161.11,191.86 " fill="none" id="C_0000287495916564113342-&gt;C_0002151170391844743478" 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_0000287495916564113342-&gt;C_0002151170391844743478-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;"/>
@@ -155,10 +155,10 @@
<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_0000287495916564113342-&gt;C_0000387733199705628658-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="M147.8,125.11 C130.52,132.54 113.72,140.81 98,150 C77.23,162.14 57.93,181.54 44.55,196.83 " fill="none" id="C_0000287495916564113342&lt;-C_0000121332093434690887" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="159.84,120.11,152.7631,118.7254,148.7631,124.7254,155.84,126.11,159.84,120.11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M183.84,111.01 C154.05,121.64 124.5,134.5 98,150 C77.23,162.14 57.93,181.54 44.55,196.83 " fill="none" id="C_0000287495916564113342&lt;-C_0000121332093434690887" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="196.16,106.75,189.1829,104.9277,184.8173,110.6672,191.7944,112.4895,196.16,106.75" 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="M176.58,120.06 C161.28,128.65 146.84,138.56 134,150 C121.56,161.08 113.43,177.85 108.35,192.19 " fill="none" id="C_0000287495916564113342-&gt;C_0001424864837456200487" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M196.4,109.87 C173.78,120.54 152.27,133.72 134,150 C121.56,161.08 113.43,177.85 108.35,192.19 " fill="none" id="C_0000287495916564113342-&gt;C_0001424864837456200487" 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_0000287495916564113342-&gt;C_0001378112127131766972" style="stroke: #A80036; stroke-width: 1.0;"/>

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -16,34 +16,13 @@ diagrams:
```
## Source code
File t00018_impl.h
```cpp
#pragma once
#include "t00018.h"
namespace clanguml {
namespace t00018 {
namespace impl {
class widget {
int n;
public:
void draw(const clanguml::t00018::widget &w) const;
void draw(const clanguml::t00018::widget &w);
widget(int n);
};
}
}
}
```
File t00018.h
```cpp
#pragma once
#ifndef _MSC_VER
#include <experimental/propagate_const>
#endif
#include <iostream>
#include <memory>
@@ -74,6 +53,29 @@ public:
}
}
```
File t00018_impl.h
```cpp
#pragma once
#include "t00018.h"
namespace clanguml {
namespace t00018 {
namespace impl {
class widget {
int n;
public:
void draw(const clanguml::t00018::widget &w) const;
void draw(const clanguml::t00018::widget &w);
widget(int n);
};
}
}
}
```
File t00018.cc
```cpp
@@ -97,8 +99,8 @@ widget::widget(widget &&) = default;
widget::~widget() = default;
widget &widget::operator=(widget &&) = default;
}
}
} // namespace t00018
} // namespace clanguml
```
File t00018_impl.cc
@@ -126,10 +128,372 @@ void widget::draw(const clanguml::t00018::widget &w)
if (w.shown())
std::cout << "drawing a non-const widget " << n << '\n';
}
}
}
}
} // namespace impl
} // namespace t00018
} // namespace clanguml
```
## Generated UML diagrams
![t00018_class](./t00018_class.svg "Pimpl pattern")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00018::impl::widget",
"id": "130502639682787993",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [
{
"access": "private",
"is_static": false,
"name": "n",
"source_location": {
"file": "../../tests/t00018/t00018_impl.h",
"line": 10
},
"type": "int"
}
],
"methods": [
{
"access": "public",
"is_const": true,
"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": "draw",
"parameters": [
{
"name": "w",
"type": "const clanguml::t00018::widget &"
}
],
"type": "void"
},
{
"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": "draw",
"parameters": [
{
"name": "w",
"type": "const clanguml::t00018::widget &"
}
],
"type": "void"
},
{
"access": "public",
"is_const": false,
"is_consteval": false,
"is_constexpr": false,
"is_constructor": true,
"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": "widget",
"parameters": [
{
"name": "n",
"type": "int"
}
],
"type": "void"
}
],
"name": "widget",
"namespace": "clanguml::t00018::impl",
"source_location": {
"file": "../../tests/t00018/t00018_impl.h",
"line": 9
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00018::widget",
"id": "1005661284373854088",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [
{
"access": "private",
"is_static": false,
"name": "pImpl",
"source_location": {
"file": "../../tests/t00018/t00018.h",
"line": 18
},
"type": "std::unique_ptr<impl::widget>"
}
],
"methods": [
{
"access": "public",
"is_const": true,
"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": "draw",
"parameters": [],
"type": "void"
},
{
"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": "draw",
"parameters": [],
"type": "void"
},
{
"access": "public",
"is_const": true,
"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": "shown",
"parameters": [],
"type": "bool"
},
{
"access": "public",
"is_const": false,
"is_consteval": false,
"is_constexpr": false,
"is_constructor": true,
"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": "widget",
"parameters": [
{
"name": "",
"type": "int"
}
],
"type": "void"
},
{
"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": "~widget",
"parameters": [],
"type": "void"
},
{
"access": "public",
"is_const": false,
"is_consteval": false,
"is_constexpr": false,
"is_constructor": true,
"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": "widget",
"parameters": [
{
"name": "",
"type": "clanguml::t00018::widget &&"
}
],
"type": "void"
},
{
"access": "public",
"is_const": false,
"is_consteval": false,
"is_constexpr": false,
"is_constructor": true,
"is_copy_assignment": false,
"is_defaulted": false,
"is_deleted": true,
"is_move_assignment": false,
"is_noexcept": false,
"is_operator": false,
"is_pure_virtual": false,
"is_static": false,
"is_virtual": false,
"name": "widget",
"parameters": [
{
"name": "",
"type": "const clanguml::t00018::widget &"
}
],
"type": "void"
},
{
"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": true,
"is_noexcept": false,
"is_operator": true,
"is_pure_virtual": false,
"is_static": false,
"is_virtual": false,
"name": "operator=",
"parameters": [
{
"name": "",
"type": "clanguml::t00018::widget &&"
}
],
"type": "clanguml::t00018::widget &"
},
{
"access": "public",
"is_const": false,
"is_consteval": false,
"is_constexpr": false,
"is_constructor": false,
"is_copy_assignment": true,
"is_defaulted": false,
"is_deleted": true,
"is_move_assignment": false,
"is_noexcept": false,
"is_operator": true,
"is_pure_virtual": false,
"is_static": false,
"is_virtual": false,
"name": "operator=",
"parameters": [
{
"name": "",
"type": "const clanguml::t00018::widget &"
}
],
"type": "clanguml::t00018::widget &"
}
],
"name": "widget",
"namespace": "clanguml::t00018",
"source_location": {
"file": "../../tests/t00018/t00018.h",
"line": 17
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"schema_version": 1
},
"name": "t00018_class",
"relationships": [
{
"access": "public",
"destination": "1005661284373854088",
"source": "130502639682787993",
"type": "dependency"
},
{
"access": "private",
"destination": "130502639682787993",
"label": "pImpl",
"source": "1005661284373854088",
"type": "aggregation"
}
],
"using_namespace": "clanguml::t00018"
}
```

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="371px" preserveAspectRatio="none" style="width:330px;height:371px;" version="1.1" viewBox="0 0 330 371" width="330px" 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="395px" preserveAspectRatio="none" style="width:317px;height:395px;" version="1.1" viewBox="0 0 317 395" width="317px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1lyivyd6w81fg" width="300%" x="-1" y="-1">
<filter height="300%" id="f1sbotn19fw6a3" 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,68 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00018/t00018_impl.h#L9" target="_top" title="widget" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00018/t00018_impl.h#L9" xlink:show="new" xlink:title="widget" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1lyivyd6w81fg)" height="99.2188" id="C_0000130502639682787993" style="stroke: #A80036; stroke-width: 1.5;" width="231" x="47" y="8"/>
<ellipse cx="121.25" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M124.2188,29.6406 Q123.6406,29.9375 123,30.0781 Q122.3594,30.2344 121.6563,30.2344 Q119.1563,30.2344 117.8281,28.5938 Q116.5156,26.9375 116.5156,23.8125 Q116.5156,20.6875 117.8281,19.0313 Q119.1563,17.375 121.6563,17.375 Q122.3594,17.375 123,17.5313 Q123.6563,17.6875 124.2188,17.9844 L124.2188,20.7031 Q123.5938,20.125 123,19.8594 Q122.4063,19.5781 121.7813,19.5781 Q120.4375,19.5781 119.75,20.6563 Q119.0625,21.7188 119.0625,23.8125 Q119.0625,25.9063 119.75,26.9844 Q120.4375,28.0469 121.7813,28.0469 Q122.4063,28.0469 123,27.7813 Q123.5938,27.5 124.2188,26.9219 L124.2188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="74" x="141.75" y="28.1543">impl::widget</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="48" x2="277" y1="40" y2="40"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00018/t00018_impl.h#L9" target="_top" title="widget" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00018/t00018_impl.h#L9" xlink:show="new" xlink:title="widget" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1sbotn19fw6a3)" height="107.2188" id="C_0000130502639682787993" style="stroke: #A80036; stroke-width: 1.5;" width="231" x="40.5" y="8"/>
<ellipse cx="114.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M117.7188,29.6406 Q117.1406,29.9375 116.5,30.0781 Q115.8594,30.2344 115.1563,30.2344 Q112.6563,30.2344 111.3281,28.5938 Q110.0156,26.9375 110.0156,23.8125 Q110.0156,20.6875 111.3281,19.0313 Q112.6563,17.375 115.1563,17.375 Q115.8594,17.375 116.5,17.5313 Q117.1563,17.6875 117.7188,17.9844 L117.7188,20.7031 Q117.0938,20.125 116.5,19.8594 Q115.9063,19.5781 115.2813,19.5781 Q113.9375,19.5781 113.25,20.6563 Q112.5625,21.7188 112.5625,23.8125 Q112.5625,25.9063 113.25,26.9844 Q113.9375,28.0469 115.2813,28.0469 Q115.9063,28.0469 116.5,27.7813 Q117.0938,27.5 117.7188,26.9219 L117.7188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="74" x="135.25" y="28.1543">impl::widget</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="41.5" x2="270.5" y1="40" y2="40"/>
<ellipse cx="51.5" cy="51" 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="105" x="60.5" y="54.2104">widget(int n) : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="41.5" x2="270.5" y1="60.8047" y2="60.8047"/>
<ellipse cx="51.5" cy="71.8047" 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="205" x="60.5" y="75.0151">draw(const widget &amp; w) const : void</text>
<ellipse cx="51.5" cy="84.6094" 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="170" x="60.5" y="87.8198">draw(const widget &amp; w) : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="41.5" x2="270.5" y1="94.4141" y2="94.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00018/t00018_impl.h#L10" target="_top" title="n" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00018/t00018_impl.h#L10" xlink:show="new" xlink:title="n" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="53" y="46"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="55" y="48"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00018/t00018_impl.h#L10" target="_top" title="n" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00018/t00018_impl.h#L10" xlink:show="new" xlink:title="n" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="46.5" y="100.4141"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="48.5" y="102.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00018/t00018_impl.h#L10" target="_top" title="n" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00018/t00018_impl.h#L10" xlink:show="new" xlink:title="n" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="67" y="54.2104">n : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00018/t00018_impl.h#L10" target="_top" title="n" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00018/t00018_impl.h#L10" xlink:show="new" xlink:title="n" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="60.5" y="108.6245">n : int</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="48" x2="277" y1="60.8047" y2="60.8047"/>
<ellipse cx="58" cy="71.8047" 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="205" x="67" y="75.0151">draw(const widget &amp; w) const : void</text>
<ellipse cx="58" cy="84.6094" 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="170" x="67" y="87.8198">draw(const widget &amp; w) : void</text>
<ellipse cx="58" cy="97.4141" 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="105" x="67" y="100.6245">widget(int n) : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00018/t00018.h#L15" target="_top" title="widget" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00018/t00018.h#L15" xlink:show="new" xlink:title="widget" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1lyivyd6w81fg)" height="176.0469" id="C_0001005661284373854088" style="stroke: #A80036; stroke-width: 1.5;" width="313" x="6" y="184"/>
<ellipse cx="137.75" cy="200" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M140.7188,205.6406 Q140.1406,205.9375 139.5,206.0781 Q138.8594,206.2344 138.1563,206.2344 Q135.6563,206.2344 134.3281,204.5938 Q133.0156,202.9375 133.0156,199.8125 Q133.0156,196.6875 134.3281,195.0313 Q135.6563,193.375 138.1563,193.375 Q138.8594,193.375 139.5,193.5313 Q140.1563,193.6875 140.7188,193.9844 L140.7188,196.7031 Q140.0938,196.125 139.5,195.8594 Q138.9063,195.5781 138.2813,195.5781 Q136.9375,195.5781 136.25,196.6563 Q135.5625,197.7188 135.5625,199.8125 Q135.5625,201.9063 136.25,202.9844 Q136.9375,204.0469 138.2813,204.0469 Q138.9063,204.0469 139.5,203.7813 Q140.0938,203.5 140.7188,202.9219 L140.7188,205.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="158.25" y="204.1543">widget</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="318" y1="216" y2="216"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00018/t00018.h#L17" target="_top" title="widget" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00018/t00018.h#L17" xlink:show="new" xlink:title="widget" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1sbotn19fw6a3)" height="192.0469" id="C_0001005661284373854088" style="stroke: #A80036; stroke-width: 1.5;" width="300" x="6" y="192"/>
<ellipse cx="131.25" cy="208" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M134.2188,213.6406 Q133.6406,213.9375 133,214.0781 Q132.3594,214.2344 131.6563,214.2344 Q129.1563,214.2344 127.8281,212.5938 Q126.5156,210.9375 126.5156,207.8125 Q126.5156,204.6875 127.8281,203.0313 Q129.1563,201.375 131.6563,201.375 Q132.3594,201.375 133,201.5313 Q133.6563,201.6875 134.2188,201.9844 L134.2188,204.7031 Q133.5938,204.125 133,203.8594 Q132.4063,203.5781 131.7813,203.5781 Q130.4375,203.5781 129.75,204.6563 Q129.0625,205.7188 129.0625,207.8125 Q129.0625,209.9063 129.75,210.9844 Q130.4375,212.0469 131.7813,212.0469 Q132.4063,212.0469 133,211.7813 Q133.5938,211.5 134.2188,210.9219 L134.2188,213.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="151.75" y="212.1543">widget</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="305" y1="224" y2="224"/>
<ellipse cx="17" cy="235" 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="94" x="26" y="238.2104">widget(int) : void</text>
<ellipse cx="17" cy="247.8047" 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="141" x="26" y="251.0151">widget(widget &amp;&amp;) : void</text>
<ellipse cx="17" cy="260.6094" 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="225" x="26" y="263.8198">widget(const widget &amp;) = deleted : void</text>
<ellipse cx="17" cy="273.4141" 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="89" x="26" y="276.6245">~widget() : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="7" x2="305" y1="283.2188" y2="283.2188"/>
<ellipse cx="17" cy="294.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="190" x="26" y="297.4292">operator=(widget &amp;&amp;) : widget &amp;</text>
<ellipse cx="17" cy="307.0234" 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="274" x="26" y="310.2339">operator=(const widget &amp;) = deleted : widget &amp;</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="7" x2="305" y1="316.8281" y2="316.8281"/>
<ellipse cx="17" cy="327.8281" 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="106" x="26" y="331.0386">draw() const : void</text>
<ellipse cx="17" cy="340.6328" 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="71" x="26" y="343.8433">draw() : void</text>
<ellipse cx="17" cy="353.4375" 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="116" x="26" y="356.6479">shown() const : bool</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="305" y1="363.2422" y2="363.2422"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00018/t00018.h#L16" target="_top" title="pImpl" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00018/t00018.h#L16" xlink:show="new" xlink:title="pImpl" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="222"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="224"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00018/t00018.h#L18" target="_top" title="pImpl" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00018/t00018.h#L18" xlink:show="new" xlink:title="pImpl" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="369.2422"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="371.2422"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00018/t00018.h#L16" target="_top" title="pImpl" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00018/t00018.h#L16" xlink:show="new" xlink:title="pImpl" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="216" x="26" y="230.2104">pImpl : std::unique_ptr&lt;impl::widget&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00018/t00018.h#L18" target="_top" title="pImpl" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00018/t00018.h#L18" xlink:show="new" xlink:title="pImpl" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="216" x="26" y="377.4526">pImpl : std::unique_ptr&lt;impl::widget&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="318" y1="236.8047" y2="236.8047"/>
<ellipse cx="17" cy="247.8047" 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="106" x="26" y="251.0151">draw() const : void</text>
<ellipse cx="17" cy="260.6094" 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="71" x="26" y="263.8198">draw() : void</text>
<ellipse cx="17" cy="273.4141" 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="123" x="26" y="276.6245">shown() const : _Bool</text>
<ellipse cx="17" cy="286.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="98" x="26" y="289.4292">widget(int ) : void</text>
<ellipse cx="17" cy="299.0234" 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="89" x="26" y="302.2339">~widget() : void</text>
<ellipse cx="17" cy="311.8281" 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="179" x="26" y="315.0386">widget(class widget &amp;&amp; ) : void</text>
<ellipse cx="17" cy="324.6328" 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="204" x="26" y="327.8433">widget(const class widget &amp; ) : void</text>
<ellipse cx="17" cy="337.4375" 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="262" x="26" y="340.6479">operator=(class widget &amp;&amp; ) : class widget &amp;</text>
<ellipse cx="17" cy="350.2422" 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="287" x="26" y="353.4526">operator=(const class widget &amp; ) : class widget &amp;</text>
<path d="M157.49,107.03 C156.66,116.94 155.93,127.29 155.5,137 C154.9,150.47 154.93,164.7 155.33,178.66 " fill="none" id="C_0000130502639682787993-&gt;C_0001005661284373854088" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="155.5,183.79,159.2153,174.6688,155.3429,178.7925,151.2193,174.9201,155.5,183.79" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M162.5,170.43 C162.5,148.43 162.5,126.11 162.5,107.25 " fill="none" id="C_0001005661284373854088&lt;-C_0000130502639682787993" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="162.5,183.68,166.5,177.68,162.5,171.68,158.5,177.68,162.5,183.68" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="165.5" y="143.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="175.5" y="150.0669">pImpl</text>
<path d="M150.85,115.27 C150.08,125.14 149.41,135.38 149,145 C148.43,158.51 148.42,172.74 148.76,186.76 " fill="none" id="C_0000130502639682787993-&gt;C_0001005661284373854088" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="148.91,191.91,152.6773,182.8102,148.7815,186.9117,144.68,183.0158,148.91,191.91" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M156,178.29 C156,156.29 156,134.11 156,115.14 " fill="none" id="C_0001005661284373854088&lt;-C_0000130502639682787993" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="156,191.57,160,185.57,156,179.57,152,185.57,156,191.57" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="159" y="151.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="169" y="158.0669">pImpl</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 11 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="685px" preserveAspectRatio="none" style="width:781px;height:685px;" version="1.1" viewBox="0 0 781 685" width="781px" 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="693px" preserveAspectRatio="none" style="width:781px;height:693px;" version="1.1" viewBox="0 0 781 693" width="781px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="fcdr3qr24y4r3" width="300%" x="-1" y="-1">
<filter height="300%" id="fk4c4e7l3znfj" 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,142 +9,149 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_base.h#L8" target="_top" title="Base" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_base.h#L8" xlink:show="new" xlink:title="Base" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fcdr3qr24y4r3)" height="99.2188" id="C_0000261668487476634123" style="stroke: #A80036; stroke-width: 1.5;" width="163" x="194.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_base.h#L8" target="_top" title="Base" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_base.h#L8" xlink:show="new" xlink:title="Base" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fk4c4e7l3znfj)" height="107.2188" id="C_0000261668487476634123" style="stroke: #A80036; stroke-width: 1.5;" width="223" x="164.5" y="8"/>
<ellipse cx="256.25" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M259.2188,29.6406 Q258.6406,29.9375 258,30.0781 Q257.3594,30.2344 256.6563,30.2344 Q254.1563,30.2344 252.8281,28.5938 Q251.5156,26.9375 251.5156,23.8125 Q251.5156,20.6875 252.8281,19.0313 Q254.1563,17.375 256.6563,17.375 Q257.3594,17.375 258,17.5313 Q258.6563,17.6875 259.2188,17.9844 L259.2188,20.7031 Q258.5938,20.125 258,19.8594 Q257.4063,19.5781 256.7813,19.5781 Q255.4375,19.5781 254.75,20.6563 Q254.0625,21.7188 254.0625,23.8125 Q254.0625,25.9063 254.75,26.9844 Q255.4375,28.0469 256.7813,28.0469 Q257.4063,28.0469 258,27.7813 Q258.5938,27.5 259.2188,26.9219 L259.2188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="31" x="276.75" y="28.1543">Base</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="195.5" x2="356.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="195.5" x2="356.5" y1="48" y2="48"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="202.5" y="56"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="128" x="214.5" y="62.2104">Base() = default : void</text>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="202.5" y="68.8047"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="137" x="214.5" y="75.0151">~Base() = default : void</text>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="202.5" y="81.6094"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="52" x="214.5" y="87.8198">m1() : int</text>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="202.5" y="94.4141"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="97" x="214.5" y="100.6245">m2() : std::string</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="165.5" x2="386.5" y1="40" y2="40"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="172.5" y="48"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="128" x="184.5" y="54.2104">Base() = default : void</text>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="172.5" y="60.8047"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="197" x="184.5" y="67.0151">~Base() constexpr = default : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="165.5" x2="386.5" y1="73.6094" y2="73.6094"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="172.5" y="81.6094"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="52" x="184.5" y="87.8198">m1() : int</text>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="172.5" y="94.4141"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="97" x="184.5" y="100.6245">m2() : std::string</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="165.5" x2="386.5" y1="107.2188" y2="107.2188"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_layer1.h#L9" target="_top" title="Layer1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_layer1.h#L9" xlink:show="new" xlink:title="Layer1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fcdr3qr24y4r3)" height="73.6094" id="C_0000902631298537519271" style="stroke: #A80036; stroke-width: 1.5;" width="150" x="443" y="601"/>
<ellipse cx="458" cy="617" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M460.9688,622.6406 Q460.3906,622.9375 459.75,623.0781 Q459.1094,623.2344 458.4063,623.2344 Q455.9063,623.2344 454.5781,621.5938 Q453.2656,619.9375 453.2656,616.8125 Q453.2656,613.6875 454.5781,612.0313 Q455.9063,610.375 458.4063,610.375 Q459.1094,610.375 459.75,610.5313 Q460.4063,610.6875 460.9688,610.9844 L460.9688,613.7031 Q460.3438,613.125 459.75,612.8594 Q459.1563,612.5781 458.5313,612.5781 Q457.1875,612.5781 456.5,613.6563 Q455.8125,614.7188 455.8125,616.8125 Q455.8125,618.9063 456.5,619.9844 Q457.1875,621.0469 458.5313,621.0469 Q459.1563,621.0469 459.75,620.7813 Q460.3438,620.5 460.9688,619.9219 L460.9688,622.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="472" y="621.1543">Layer1</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="75" x="521" y="598"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="73" x="522" y="610.1387">LowerLayer</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="444" x2="592" y1="633" y2="633"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer1.h#L9" target="_top" title="Layer1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer1.h#L9" xlink:show="new" xlink:title="Layer1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fk4c4e7l3znfj)" height="73.6094" id="C_0000902631298537519271" style="stroke: #A80036; stroke-width: 1.5;" width="150" x="443" y="609"/>
<ellipse cx="458" cy="625" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M460.9688,630.6406 Q460.3906,630.9375 459.75,631.0781 Q459.1094,631.2344 458.4063,631.2344 Q455.9063,631.2344 454.5781,629.5938 Q453.2656,627.9375 453.2656,624.8125 Q453.2656,621.6875 454.5781,620.0313 Q455.9063,618.375 458.4063,618.375 Q459.1094,618.375 459.75,618.5313 Q460.4063,618.6875 460.9688,618.9844 L460.9688,621.7031 Q460.3438,621.125 459.75,620.8594 Q459.1563,620.5781 458.5313,620.5781 Q457.1875,620.5781 456.5,621.6563 Q455.8125,622.7188 455.8125,624.8125 Q455.8125,626.9063 456.5,627.9844 Q457.1875,629.0469 458.5313,629.0469 Q459.1563,629.0469 459.75,628.7813 Q460.3438,628.5 460.9688,627.9219 L460.9688,630.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="472" y="629.1543">Layer1</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="75" x="521" y="606"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="73" x="522" y="618.1387">LowerLayer</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="444" x2="592" y1="641" y2="641"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="451" y="649"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="52" x="463" y="655.2104">m1() : int</text>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="451" y="661.8047"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="97" x="463" y="668.0151">m2() : std::string</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="444" x2="592" y1="674.6094" y2="674.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_layer2.h#L6" target="_top" title="Layer2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_layer2.h#L6" xlink:show="new" xlink:title="Layer2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fcdr3qr24y4r3)" height="60.8047" id="C_0001115150925302580647" style="stroke: #A80036; stroke-width: 1.5;" width="177" x="187.5" y="479"/>
<ellipse cx="214.65" cy="495" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M217.6188,500.6406 Q217.0406,500.9375 216.4,501.0781 Q215.7594,501.2344 215.0563,501.2344 Q212.5563,501.2344 211.2281,499.5938 Q209.9156,497.9375 209.9156,494.8125 Q209.9156,491.6875 211.2281,490.0313 Q212.5563,488.375 215.0563,488.375 Q215.7594,488.375 216.4,488.5313 Q217.0563,488.6875 217.6188,488.9844 L217.6188,491.7031 Q216.9938,491.125 216.4,490.8594 Q215.8063,490.5781 215.1813,490.5781 Q213.8375,490.5781 213.15,491.6563 Q212.4625,492.7188 212.4625,494.8125 Q212.4625,496.9063 213.15,497.9844 Q213.8375,499.0469 215.1813,499.0469 Q215.8063,499.0469 216.4,498.7813 Q216.9938,498.5 217.6188,497.9219 L217.6188,500.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="231.35" y="499.1543">Layer2</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="75" x="292.5" y="476"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="73" x="293.5" y="488.1387">LowerLayer</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="188.5" x2="363.5" y1="511" y2="511"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer2.h#L6" target="_top" title="Layer2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer2.h#L6" xlink:show="new" xlink:title="Layer2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fk4c4e7l3znfj)" height="60.8047" id="C_0001115150925302580647" style="stroke: #A80036; stroke-width: 1.5;" width="177" x="187.5" y="487"/>
<ellipse cx="214.65" cy="503" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M217.6188,508.6406 Q217.0406,508.9375 216.4,509.0781 Q215.7594,509.2344 215.0563,509.2344 Q212.5563,509.2344 211.2281,507.5938 Q209.9156,505.9375 209.9156,502.8125 Q209.9156,499.6875 211.2281,498.0313 Q212.5563,496.375 215.0563,496.375 Q215.7594,496.375 216.4,496.5313 Q217.0563,496.6875 217.6188,496.9844 L217.6188,499.7031 Q216.9938,499.125 216.4,498.8594 Q215.8063,498.5781 215.1813,498.5781 Q213.8375,498.5781 213.15,499.6563 Q212.4625,500.7188 212.4625,502.8125 Q212.4625,504.9063 213.15,505.9844 Q213.8375,507.0469 215.1813,507.0469 Q215.8063,507.0469 216.4,506.7813 Q216.9938,506.5 217.6188,505.9219 L217.6188,508.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="231.35" y="507.1543">Layer2</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="75" x="292.5" y="484"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="73" x="293.5" y="496.1387">LowerLayer</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="188.5" x2="363.5" y1="519" y2="519"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="195.5" y="527"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="151" x="207.5" y="533.2104">all_calls_count() const : int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="188.5" x2="363.5" y1="539.8047" y2="539.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_layer3.h#L8" target="_top" title="Layer3" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_layer3.h#L8" xlink:show="new" xlink:title="Layer3" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fcdr3qr24y4r3)" height="124.8281" id="C_0001853410560073854945" style="stroke: #A80036; stroke-width: 1.5;" width="150" x="6" y="277"/>
<ellipse cx="21" cy="293" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,298.6406 Q23.3906,298.9375 22.75,299.0781 Q22.1094,299.2344 21.4063,299.2344 Q18.9063,299.2344 17.5781,297.5938 Q16.2656,295.9375 16.2656,292.8125 Q16.2656,289.6875 17.5781,288.0313 Q18.9063,286.375 21.4063,286.375 Q22.1094,286.375 22.75,286.5313 Q23.4063,286.6875 23.9688,286.9844 L23.9688,289.7031 Q23.3438,289.125 22.75,288.8594 Q22.1563,288.5781 21.5313,288.5781 Q20.1875,288.5781 19.5,289.6563 Q18.8125,290.7188 18.8125,292.8125 Q18.8125,294.9063 19.5,295.9844 Q20.1875,297.0469 21.5313,297.0469 Q22.1563,297.0469 22.75,296.7813 Q23.3438,296.5 23.9688,295.9219 L23.9688,298.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="35" y="297.1543">Layer3</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="75" x="84" y="274"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="73" x="85" y="286.1387">LowerLayer</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="155" y1="309" y2="309"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer3.h#L8" target="_top" title="Layer3" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer3.h#L8" xlink:show="new" xlink:title="Layer3" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fk4c4e7l3znfj)" height="124.8281" id="C_0001853410560073854945" style="stroke: #A80036; stroke-width: 1.5;" width="150" x="6" y="285"/>
<ellipse cx="21" cy="301" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,306.6406 Q23.3906,306.9375 22.75,307.0781 Q22.1094,307.2344 21.4063,307.2344 Q18.9063,307.2344 17.5781,305.5938 Q16.2656,303.9375 16.2656,300.8125 Q16.2656,297.6875 17.5781,296.0313 Q18.9063,294.375 21.4063,294.375 Q22.1094,294.375 22.75,294.5313 Q23.4063,294.6875 23.9688,294.9844 L23.9688,297.7031 Q23.3438,297.125 22.75,296.8594 Q22.1563,296.5781 21.5313,296.5781 Q20.1875,296.5781 19.5,297.6563 Q18.8125,298.7188 18.8125,300.8125 Q18.8125,302.9063 19.5,303.9844 Q20.1875,305.0469 21.5313,305.0469 Q22.1563,305.0469 22.75,304.7813 Q23.3438,304.5 23.9688,303.9219 L23.9688,306.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="35" y="305.1543">Layer3</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="75" x="84" y="282"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="73" x="85" y="294.1387">LowerLayer</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="155" y1="317" y2="317"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="325"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="52" x="26" y="331.2104">m1() : int</text>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="337.8047"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="119" x="26" y="344.0151">m1_calls() const : int</text>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="350.6094"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="97" x="26" y="356.8198">m2() : std::string</text>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="363.4141"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="119" x="26" y="369.6245">m2_calls() const : int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="155" y1="376.2188" y2="376.2188"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_layer3.h#L29" target="_top" title="m_m1_calls" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_layer3.h#L29" xlink:show="new" xlink:title="m_m1_calls" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="315"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="317"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer3.h#L29" target="_top" title="m_m1_calls" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer3.h#L29" xlink:show="new" xlink:title="m_m1_calls" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="382.2188"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="384.2188"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_layer3.h#L29" target="_top" title="m_m1_calls" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_layer3.h#L29" xlink:show="new" xlink:title="m_m1_calls" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="26" y="323.2104">m_m1_calls : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer3.h#L29" target="_top" title="m_m1_calls" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer3.h#L29" xlink:show="new" xlink:title="m_m1_calls" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="26" y="390.4292">m_m1_calls : int</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_layer3.h#L30" target="_top" title="m_m2_calls" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_layer3.h#L30" xlink:show="new" xlink:title="m_m2_calls" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="327.8047"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="329.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer3.h#L30" target="_top" title="m_m2_calls" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer3.h#L30" xlink:show="new" xlink:title="m_m2_calls" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="395.0234"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="397.0234"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_layer3.h#L30" target="_top" title="m_m2_calls" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019_layer3.h#L30" xlink:show="new" xlink:title="m_m2_calls" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="26" y="336.0151">m_m2_calls : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer3.h#L30" target="_top" title="m_m2_calls" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer3.h#L30" xlink:show="new" xlink:title="m_m2_calls" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="26" y="403.2339">m_m2_calls : int</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="155" y1="342.6094" y2="342.6094"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="350.6094"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="52" x="26" y="356.8198">m1() : int</text>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="363.4141"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="97" x="26" y="369.6245">m2() : std::string</text>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="376.2188"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="119" x="26" y="382.4292">m1_calls() const : int</text>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="389.0234"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="119" x="26" y="395.2339">m2_calls() const : int</text>
<rect fill="#FEFECE" filter="url(#fcdr3qr24y4r3)" height="48" id="C_0000972890420743280319" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="222.5" y="168"/>
<ellipse cx="237.5" cy="184" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M240.4688,189.6406 Q239.8906,189.9375 239.25,190.0781 Q238.6094,190.2344 237.9063,190.2344 Q235.4063,190.2344 234.0781,188.5938 Q232.7656,186.9375 232.7656,183.8125 Q232.7656,180.6875 234.0781,179.0313 Q235.4063,177.375 237.9063,177.375 Q238.6094,177.375 239.25,177.5313 Q239.9063,177.6875 240.4688,177.9844 L240.4688,180.7031 Q239.8438,180.125 239.25,179.8594 Q238.6563,179.5781 238.0313,179.5781 Q236.6875,179.5781 236,180.6563 Q235.3125,181.7188 235.3125,183.8125 Q235.3125,185.9063 236,186.9844 Q236.6875,188.0469 238.0313,188.0469 Q238.6563,188.0469 239.25,187.7813 Q239.8438,187.5 240.4688,186.9219 L240.4688,189.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="251.5" y="188.1543">Layer3</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="32" x="300.5" y="165"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="30" x="301.5" y="177.1387">Base</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="223.5" x2="328.5" y1="200" y2="200"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="223.5" x2="328.5" y1="208" y2="208"/>
<rect fill="#FEFECE" filter="url(#fcdr3qr24y4r3)" height="48" id="C_0000129784999866998870" style="stroke: #A80036; stroke-width: 1.5;" width="170" x="191" y="315.5"/>
<ellipse cx="206" cy="331.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M208.9688,337.1406 Q208.3906,337.4375 207.75,337.5781 Q207.1094,337.7344 206.4063,337.7344 Q203.9063,337.7344 202.5781,336.0938 Q201.2656,334.4375 201.2656,331.3125 Q201.2656,328.1875 202.5781,326.5313 Q203.9063,324.875 206.4063,324.875 Q207.1094,324.875 207.75,325.0313 Q208.4063,325.1875 208.9688,325.4844 L208.9688,328.2031 Q208.3438,327.625 207.75,327.3594 Q207.1563,327.0781 206.5313,327.0781 Q205.1875,327.0781 204.5,328.1563 Q203.8125,329.2188 203.8125,331.3125 Q203.8125,333.4063 204.5,334.4844 Q205.1875,335.5469 206.5313,335.5469 Q207.1563,335.5469 207.75,335.2813 Q208.3438,335 208.9688,334.4219 L208.9688,337.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="220" y="335.6543">Layer2</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="95" x="269" y="312.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="93" x="270" y="324.6387">Layer3&lt;Base&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="192" x2="360" y1="347.5" y2="347.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="192" x2="360" y1="355.5" y2="355.5"/>
<rect fill="#FEFECE" filter="url(#fcdr3qr24y4r3)" height="48" id="C_0000659076058325663708" style="stroke: #A80036; stroke-width: 1.5;" width="233" x="401.5" y="485.5"/>
<ellipse cx="416.5" cy="501.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M419.4688,507.1406 Q418.8906,507.4375 418.25,507.5781 Q417.6094,507.7344 416.9063,507.7344 Q414.4063,507.7344 413.0781,506.0938 Q411.7656,504.4375 411.7656,501.3125 Q411.7656,498.1875 413.0781,496.5313 Q414.4063,494.875 416.9063,494.875 Q417.6094,494.875 418.25,495.0313 Q418.9063,495.1875 419.4688,495.4844 L419.4688,498.2031 Q418.8438,497.625 418.25,497.3594 Q417.6563,497.0781 417.0313,497.0781 Q415.6875,497.0781 415,498.1563 Q414.3125,499.2188 414.3125,501.3125 Q414.3125,503.4063 415,504.4844 Q415.6875,505.5469 417.0313,505.5469 Q417.6563,505.5469 418.25,505.2813 Q418.8438,505 419.4688,504.4219 L419.4688,507.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="430.5" y="505.6543">Layer1</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="158" x="479.5" y="482.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="156" x="480.5" y="494.6387">Layer2&lt;Layer3&lt;Base&gt;&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="402.5" x2="633.5" y1="517.5" y2="517.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="402.5" x2="633.5" y1="525.5" y2="525.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019.cc#L11" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019.cc#L11" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fcdr3qr24y4r3)" height="60.8047" id="C_0001015164998787089197" style="stroke: #A80036; stroke-width: 1.5;" width="374" x="396" y="309"/>
<ellipse cx="574.75" cy="325" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M577.7188,330.6406 Q577.1406,330.9375 576.5,331.0781 Q575.8594,331.2344 575.1563,331.2344 Q572.6563,331.2344 571.3281,329.5938 Q570.0156,327.9375 570.0156,324.8125 Q570.0156,321.6875 571.3281,320.0313 Q572.6563,318.375 575.1563,318.375 Q575.8594,318.375 576.5,318.5313 Q577.1563,318.6875 577.7188,318.9844 L577.7188,321.7031 Q577.0938,321.125 576.5,320.8594 Q575.9063,320.5781 575.2813,320.5781 Q573.9375,320.5781 573.25,321.6563 Q572.5625,322.7188 572.5625,324.8125 Q572.5625,326.9063 573.25,327.9844 Q573.9375,329.0469 575.2813,329.0469 Q575.9063,329.0469 576.5,328.7813 Q577.0938,328.5 577.7188,327.9219 L577.7188,330.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="595.25" y="329.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="397" x2="769" y1="341" y2="341"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer2.h#L6" target="_top" title="Layer3" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer2.h#L6" xlink:show="new" xlink:title="Layer3" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fk4c4e7l3znfj)" height="48" id="C_0000972890420743280319" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="222.5" y="176"/>
<ellipse cx="237.5" cy="192" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M240.4688,197.6406 Q239.8906,197.9375 239.25,198.0781 Q238.6094,198.2344 237.9063,198.2344 Q235.4063,198.2344 234.0781,196.5938 Q232.7656,194.9375 232.7656,191.8125 Q232.7656,188.6875 234.0781,187.0313 Q235.4063,185.375 237.9063,185.375 Q238.6094,185.375 239.25,185.5313 Q239.9063,185.6875 240.4688,185.9844 L240.4688,188.7031 Q239.8438,188.125 239.25,187.8594 Q238.6563,187.5781 238.0313,187.5781 Q236.6875,187.5781 236,188.6563 Q235.3125,189.7188 235.3125,191.8125 Q235.3125,193.9063 236,194.9844 Q236.6875,196.0469 238.0313,196.0469 Q238.6563,196.0469 239.25,195.7813 Q239.8438,195.5 240.4688,194.9219 L240.4688,197.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="251.5" y="196.1543">Layer3</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="32" x="300.5" y="173"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="30" x="301.5" y="185.1387">Base</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="223.5" x2="328.5" y1="208" y2="208"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="223.5" x2="328.5" y1="216" y2="216"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019.cc#L13" target="_top" title="layers" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019.cc#L13" xlink:show="new" xlink:title="layers" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="402" y="347"/>
<ellipse cx="407" cy="352" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer1.h#L9" target="_top" title="Layer2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019_layer1.h#L9" xlink:show="new" xlink:title="Layer2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fk4c4e7l3znfj)" height="48" id="C_0000129784999866998870" style="stroke: #A80036; stroke-width: 1.5;" width="170" x="191" y="323.5"/>
<ellipse cx="206" cy="339.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M208.9688,345.1406 Q208.3906,345.4375 207.75,345.5781 Q207.1094,345.7344 206.4063,345.7344 Q203.9063,345.7344 202.5781,344.0938 Q201.2656,342.4375 201.2656,339.3125 Q201.2656,336.1875 202.5781,334.5313 Q203.9063,332.875 206.4063,332.875 Q207.1094,332.875 207.75,333.0313 Q208.4063,333.1875 208.9688,333.4844 L208.9688,336.2031 Q208.3438,335.625 207.75,335.3594 Q207.1563,335.0781 206.5313,335.0781 Q205.1875,335.0781 204.5,336.1563 Q203.8125,337.2188 203.8125,339.3125 Q203.8125,341.4063 204.5,342.4844 Q205.1875,343.5469 206.5313,343.5469 Q207.1563,343.5469 207.75,343.2813 Q208.3438,343 208.9688,342.4219 L208.9688,345.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="220" y="343.6543">Layer2</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="95" x="269" y="320.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="93" x="270" y="332.6387">Layer3&lt;Base&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="192" x2="360" y1="355.5" y2="355.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="192" x2="360" y1="363.5" y2="363.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019.cc#L13" target="_top" title="layers" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00019/t00019.cc#L13" xlink:show="new" xlink:title="layers" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="348" x="416" y="355.2104">layers : std::unique_ptr&lt;Layer1&lt;Layer2&lt;Layer3&lt;Base&gt;&gt;&gt;&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/../../../../usr/include/c++/12/bits/unique_ptr.h#L269" target="_top" title="Layer1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/../../../../usr/include/c++/12/bits/unique_ptr.h#L269" xlink:show="new" xlink:title="Layer1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fk4c4e7l3znfj)" height="48" id="C_0000659076058325663708" style="stroke: #A80036; stroke-width: 1.5;" width="233" x="401.5" y="493.5"/>
<ellipse cx="416.5" cy="509.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M419.4688,515.1406 Q418.8906,515.4375 418.25,515.5781 Q417.6094,515.7344 416.9063,515.7344 Q414.4063,515.7344 413.0781,514.0938 Q411.7656,512.4375 411.7656,509.3125 Q411.7656,506.1875 413.0781,504.5313 Q414.4063,502.875 416.9063,502.875 Q417.6094,502.875 418.25,503.0313 Q418.9063,503.1875 419.4688,503.4844 L419.4688,506.2031 Q418.8438,505.625 418.25,505.3594 Q417.6563,505.0781 417.0313,505.0781 Q415.6875,505.0781 415,506.1563 Q414.3125,507.2188 414.3125,509.3125 Q414.3125,511.4063 415,512.4844 Q415.6875,513.5469 417.0313,513.5469 Q417.6563,513.5469 418.25,513.2813 Q418.8438,513 419.4688,512.4219 L419.4688,515.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="41" x="430.5" y="513.6543">Layer1</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="158" x="479.5" y="490.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="156" x="480.5" y="502.6387">Layer2&lt;Layer3&lt;Base&gt;&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="402.5" x2="633.5" y1="525.5" y2="525.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="402.5" x2="633.5" y1="533.5" y2="533.5"/>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="397" x2="769" y1="361.8047" y2="361.8047"/>
<path d="M286.58,167.66 C289.05,152.36 289.95,131.7 289.29,112.47 " fill="none" id="C_0000972890420743280319-&gt;C_0000261668487476634123" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="289.06,107.09,285.4502,116.2535,289.2747,112.0854,293.4428,115.9099,289.06,107.09" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M263.26,127.18 C263.35,141.78 264.27,156.22 266.01,167.66 " fill="none" id="C_0000261668487476634123&lt;-C_0000972890420743280319" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="256.26,126.94,263.66,107.09,270.26,127.22,256.26,126.94" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M245.1,216.05 C225.36,230.79 198.64,250.73 172.49,270.23 " fill="none" id="C_0000972890420743280319-&gt;C_0001853410560073854945" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="176.57,275.92,156.36,282.27,168.2,264.7,176.57,275.92" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M286.24,315.07 C290.33,289.53 290.57,248.66 286.95,221.33 " fill="none" id="C_0000129784999866998870-&gt;C_0000972890420743280319" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="286.18,216.05,283.5312,225.536,286.9071,220.9969,291.4462,224.3727,286.18,216.05" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M264.25,235.99 C262.41,261.86 263.11,293.79 266.33,315.07 " fill="none" id="C_0000972890420743280319&lt;-C_0000129784999866998870" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="257.29,235.19,266.39,216.05,271.22,236.69,257.29,235.19" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M276,363.51 C276,387.89 276,427.16 276,458.69 " fill="none" id="C_0000129784999866998870-&gt;C_0001115150925302580647" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="283,458.99,276,478.99,269,458.99,283,458.99" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M494.16,485.23 C454.11,453.98 374.51,398.63 323.05,366.19 " fill="none" id="C_0000659076058325663708-&gt;C_0000129784999866998870" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="318.78,363.51,324.2846,371.677,323.0176,366.1638,328.5307,364.8968,318.78,363.51" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M316.14,375.73 C360.28,408.65 430.22,456.87 475.34,485.23 " fill="none" id="C_0000129784999866998870&lt;-C_0000659076058325663708" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="311.74,381.18,300.04,363.51,320.21,370.03,311.74,381.18" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M518,533.7 C518,546.84 518,563.9 518,580.35 " fill="none" id="C_0000659076058325663708-&gt;C_0000902631298537519271" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="525,580.53,518,600.53,511,580.53,525,580.53" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M568.13,370.14 C559.57,387.84 548.97,410.91 541,432 C535.01,447.85 529.5,466 525.37,480.64 " fill="none" id="C_0001015164998787089197-&gt;C_0000659076058325663708" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="524.03,485.46,530.301,477.8656,525.3734,480.6438,522.5952,475.7162,524.03,485.46" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M567.45,382.3 C559.88,402.49 550.57,427.05 542,449 C537.3,461.04 531.93,474.38 527.47,485.38 " fill="none" id="C_0001015164998787089197&lt;-C_0000659076058325663708" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="572.04,370.04,566.1901,374.2565,567.8323,381.2781,573.6822,377.0616,572.04,370.04" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="553" cy="441.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="38" x="560" y="445.0669">layers</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019.cc#L11" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019.cc#L11" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fk4c4e7l3znfj)" height="60.8047" id="C_0001015164998787089197" style="stroke: #A80036; stroke-width: 1.5;" width="374" x="396" y="317"/>
<ellipse cx="574.75" cy="333" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M577.7188,338.6406 Q577.1406,338.9375 576.5,339.0781 Q575.8594,339.2344 575.1563,339.2344 Q572.6563,339.2344 571.3281,337.5938 Q570.0156,335.9375 570.0156,332.8125 Q570.0156,329.6875 571.3281,328.0313 Q572.6563,326.375 575.1563,326.375 Q575.8594,326.375 576.5,326.5313 Q577.1563,326.6875 577.7188,326.9844 L577.7188,329.7031 Q577.0938,329.125 576.5,328.8594 Q575.9063,328.5781 575.2813,328.5781 Q573.9375,328.5781 573.25,329.6563 Q572.5625,330.7188 572.5625,332.8125 Q572.5625,334.9063 573.25,335.9844 Q573.9375,337.0469 575.2813,337.0469 Q575.9063,337.0469 576.5,336.7813 Q577.0938,336.5 577.7188,335.9219 L577.7188,338.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="595.25" y="337.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="397" x2="769" y1="349" y2="349"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="397" x2="769" y1="357" y2="357"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019.cc#L13" target="_top" title="layers" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019.cc#L13" xlink:show="new" xlink:title="layers" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="402" y="363"/>
<ellipse cx="407" cy="368" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019.cc#L13" target="_top" title="layers" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00019/t00019.cc#L13" xlink:show="new" xlink:title="layers" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="348" x="416" y="371.2104">layers : std::unique_ptr&lt;Layer1&lt;Layer2&lt;Layer3&lt;Base&gt;&gt;&gt;&gt;</text>
</a>
<path d="M286.42,175.95 C288.89,160.78 289.88,140.2 289.37,120.73 " fill="none" id="C_0000972890420743280319-&gt;C_0000261668487476634123" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="289.19,115.27,285.5016,124.4021,289.3618,120.267,293.4969,124.1272,289.19,115.27" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M263.28,135.31 C263.44,150.07 264.4,164.54 266.16,175.95 " fill="none" id="C_0000261668487476634123&lt;-C_0000972890420743280319" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="256.28,135.18,263.55,115.27,270.28,135.37,256.28,135.18" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M245.1,224.05 C225.36,238.79 198.64,258.73 172.49,278.23 " fill="none" id="C_0000972890420743280319-&gt;C_0001853410560073854945" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="176.57,283.92,156.36,290.27,168.2,272.7,176.57,283.92" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M286.24,323.07 C290.33,297.53 290.57,256.66 286.95,229.33 " fill="none" id="C_0000129784999866998870-&gt;C_0000972890420743280319" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="286.18,224.05,283.5312,233.536,286.9071,228.9969,291.4462,232.3727,286.18,224.05" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M264.25,243.99 C262.41,269.86 263.11,301.79 266.33,323.07 " fill="none" id="C_0000972890420743280319&lt;-C_0000129784999866998870" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="257.29,243.19,266.39,224.05,271.22,244.69,257.29,243.19" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M276,371.51 C276,395.89 276,435.16 276,466.69 " fill="none" id="C_0000129784999866998870-&gt;C_0001115150925302580647" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="283,466.99,276,486.99,269,466.99,283,466.99" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M494.16,493.23 C454.11,461.98 374.51,406.63 323.05,374.19 " fill="none" id="C_0000659076058325663708-&gt;C_0000129784999866998870" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="318.78,371.51,324.2846,379.677,323.0176,374.1638,328.5307,372.8968,318.78,371.51" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M316.14,383.73 C360.28,416.65 430.22,464.87 475.34,493.23 " fill="none" id="C_0000129784999866998870&lt;-C_0000659076058325663708" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="311.74,389.18,300.04,371.51,320.21,378.03,311.74,389.18" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M518,541.7 C518,554.84 518,571.9 518,588.35 " fill="none" id="C_0000659076058325663708-&gt;C_0000902631298537519271" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="525,588.53,518,608.53,511,588.53,525,588.53" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M568.13,378.14 C559.57,395.84 548.97,418.91 541,440 C535.01,455.85 529.5,474 525.37,488.64 " fill="none" id="C_0001015164998787089197-&gt;C_0000659076058325663708" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="524.03,493.46,530.301,485.8656,525.3734,488.6438,522.5952,483.7162,524.03,493.46" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M567.45,390.3 C559.88,410.49 550.57,435.05 542,457 C537.3,469.04 531.93,482.38 527.47,493.38 " fill="none" id="C_0001015164998787089197&lt;-C_0000659076058325663708" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="572.04,378.04,566.1901,382.2565,567.8323,389.2781,573.6822,385.0616,572.04,378.04" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="553" cy="449.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="38" x="560" y="453.0669">layers</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 25 KiB

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="360px" preserveAspectRatio="none" style="width:1171px;height:360px;" version="1.1" viewBox="0 0 1171 360" width="1171px" 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="886px" preserveAspectRatio="none" style="width:763px;height:886px;" version="1.1" viewBox="0 0 763 886" width="763px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="fynry5siro512" width="300%" x="-1" y="-1">
<filter height="300%" id="fjvq7ct8f8k7y" 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,125 +9,139 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L6" target="_top" title="ProductA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L6" xlink:show="new" xlink:title="ProductA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fynry5siro512)" height="73.6094" id="C_0000425267229659464944" style="stroke: #A80036; stroke-width: 1.5;" width="200" x="786" y="8"/>
<ellipse cx="853.75" cy="24" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M853.8594,19.3438 L852.7031,24.4219 L855.0313,24.4219 L853.8594,19.3438 Z M852.375,17.1094 L855.3594,17.1094 L858.7188,29.5 L856.2656,29.5 L855.5,26.4375 L852.2188,26.4375 L851.4688,29.5 L849.0313,29.5 L852.375,17.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="56" x="874.25" y="28.1543">ProductA</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="787" x2="985" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="787" x2="985" y1="48" y2="48"/>
<ellipse cx="797" cy="59" 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="158" x="806" y="62.2104">~ProductA() = default : void</text>
<ellipse cx="797" cy="71.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="174" x="806" y="75.0151">sell(int price) const = 0 : _Bool</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L6" target="_top" title="ProductA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L6" xlink:show="new" xlink:title="ProductA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fjvq7ct8f8k7y)" height="81.6094" id="C_0000425267229659464944" style="stroke: #A80036; stroke-width: 1.5;" width="244" x="280.5" y="142"/>
<ellipse cx="370.25" cy="158" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M370.3594,153.3438 L369.2031,158.4219 L371.5313,158.4219 L370.3594,153.3438 Z M368.875,151.1094 L371.8594,151.1094 L375.2188,163.5 L372.7656,163.5 L372,160.4375 L368.7188,160.4375 L367.9688,163.5 L365.5313,163.5 L368.875,151.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="56" x="390.75" y="162.1543">ProductA</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="281.5" x2="523.5" y1="174" y2="174"/>
<ellipse cx="291.5" cy="185" 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="218" x="300.5" y="188.2104">~ProductA() constexpr = default : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="281.5" x2="523.5" y1="194.8047" y2="194.8047"/>
<ellipse cx="291.5" cy="205.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="167" x="300.5" y="209.0151">sell(int price) const = 0 : bool</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="281.5" x2="523.5" y1="215.6094" y2="215.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L12" target="_top" title="ProductA1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L12" xlink:show="new" xlink:title="ProductA1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fynry5siro512)" height="60.8047" id="C_0001756496029797864207" style="stroke: #A80036; stroke-width: 1.5;" width="178" x="219" y="148.5"/>
<ellipse cx="271.25" cy="164.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M274.2188,170.1406 Q273.6406,170.4375 273,170.5781 Q272.3594,170.7344 271.6563,170.7344 Q269.1563,170.7344 267.8281,169.0938 Q266.5156,167.4375 266.5156,164.3125 Q266.5156,161.1875 267.8281,159.5313 Q269.1563,157.875 271.6563,157.875 Q272.3594,157.875 273,158.0313 Q273.6563,158.1875 274.2188,158.4844 L274.2188,161.2031 Q273.5938,160.625 273,160.3594 Q272.4063,160.0781 271.7813,160.0781 Q270.4375,160.0781 269.75,161.1563 Q269.0625,162.2188 269.0625,164.3125 Q269.0625,166.4063 269.75,167.4844 Q270.4375,168.5469 271.7813,168.5469 Q272.4063,168.5469 273,168.2813 Q273.5938,168 274.2188,167.4219 L274.2188,170.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="65" x="291.75" y="168.6543">ProductA1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="220" x2="396" y1="180.5" y2="180.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="220" x2="396" y1="188.5" y2="188.5"/>
<ellipse cx="230" cy="199.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="152" x="239" y="202.7104">sell(int price) const : _Bool</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L12" target="_top" title="ProductA1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L12" xlink:show="new" xlink:title="ProductA1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fjvq7ct8f8k7y)" height="60.8047" id="C_0001756496029797864207" style="stroke: #A80036; stroke-width: 1.5;" width="171" x="178" y="284"/>
<ellipse cx="226.75" cy="300" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M229.7188,305.6406 Q229.1406,305.9375 228.5,306.0781 Q227.8594,306.2344 227.1563,306.2344 Q224.6563,306.2344 223.3281,304.5938 Q222.0156,302.9375 222.0156,299.8125 Q222.0156,296.6875 223.3281,295.0313 Q224.6563,293.375 227.1563,293.375 Q227.8594,293.375 228.5,293.5313 Q229.1563,293.6875 229.7188,293.9844 L229.7188,296.7031 Q229.0938,296.125 228.5,295.8594 Q227.9063,295.5781 227.2813,295.5781 Q225.9375,295.5781 225.25,296.6563 Q224.5625,297.7188 224.5625,299.8125 Q224.5625,301.9063 225.25,302.9844 Q225.9375,304.0469 227.2813,304.0469 Q227.9063,304.0469 228.5,303.7813 Q229.0938,303.5 229.7188,302.9219 L229.7188,305.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="65" x="247.25" y="304.1543">ProductA1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="179" x2="348" y1="316" y2="316"/>
<ellipse cx="189" cy="327" 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="145" x="198" y="330.2104">sell(int price) const : bool</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="179" x2="348" y1="336.8047" y2="336.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L17" target="_top" title="ProductA2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L17" xlink:show="new" xlink:title="ProductA2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fynry5siro512)" height="60.8047" id="C_0001531708592885216981" style="stroke: #A80036; stroke-width: 1.5;" width="178" x="982" y="148.5"/>
<ellipse cx="1034.25" cy="164.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1037.2188,170.1406 Q1036.6406,170.4375 1036,170.5781 Q1035.3594,170.7344 1034.6563,170.7344 Q1032.1563,170.7344 1030.8281,169.0938 Q1029.5156,167.4375 1029.5156,164.3125 Q1029.5156,161.1875 1030.8281,159.5313 Q1032.1563,157.875 1034.6563,157.875 Q1035.3594,157.875 1036,158.0313 Q1036.6563,158.1875 1037.2188,158.4844 L1037.2188,161.2031 Q1036.5938,160.625 1036,160.3594 Q1035.4063,160.0781 1034.7813,160.0781 Q1033.4375,160.0781 1032.75,161.1563 Q1032.0625,162.2188 1032.0625,164.3125 Q1032.0625,166.4063 1032.75,167.4844 Q1033.4375,168.5469 1034.7813,168.5469 Q1035.4063,168.5469 1036,168.2813 Q1036.5938,168 1037.2188,167.4219 L1037.2188,170.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="65" x="1054.75" y="168.6543">ProductA2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="983" x2="1159" y1="180.5" y2="180.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="983" x2="1159" y1="188.5" y2="188.5"/>
<ellipse cx="993" cy="199.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="152" x="1002" y="202.7104">sell(int price) const : _Bool</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L17" target="_top" title="ProductA2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L17" xlink:show="new" xlink:title="ProductA2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fjvq7ct8f8k7y)" height="60.8047" id="C_0001531708592885216981" style="stroke: #A80036; stroke-width: 1.5;" width="171" x="527" y="411.5"/>
<ellipse cx="575.75" cy="427.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M578.7188,433.1406 Q578.1406,433.4375 577.5,433.5781 Q576.8594,433.7344 576.1563,433.7344 Q573.6563,433.7344 572.3281,432.0938 Q571.0156,430.4375 571.0156,427.3125 Q571.0156,424.1875 572.3281,422.5313 Q573.6563,420.875 576.1563,420.875 Q576.8594,420.875 577.5,421.0313 Q578.1563,421.1875 578.7188,421.4844 L578.7188,424.2031 Q578.0938,423.625 577.5,423.3594 Q576.9063,423.0781 576.2813,423.0781 Q574.9375,423.0781 574.25,424.1563 Q573.5625,425.2188 573.5625,427.3125 Q573.5625,429.4063 574.25,430.4844 Q574.9375,431.5469 576.2813,431.5469 Q576.9063,431.5469 577.5,431.2813 Q578.0938,431 578.7188,430.4219 L578.7188,433.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="65" x="596.25" y="431.6543">ProductA2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="528" x2="697" y1="443.5" y2="443.5"/>
<ellipse cx="538" cy="454.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="145" x="547" y="457.7104">sell(int price) const : bool</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="528" x2="697" y1="464.3047" y2="464.3047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L22" target="_top" title="ProductB" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L22" xlink:show="new" xlink:title="ProductB" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fynry5siro512)" height="73.6094" id="C_0002235759006374865842" style="stroke: #A80036; stroke-width: 1.5;" width="202" x="364" y="8"/>
<ellipse cx="432.75" cy="24" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M432.8594,19.3438 L431.7031,24.4219 L434.0313,24.4219 L432.8594,19.3438 Z M431.375,17.1094 L434.3594,17.1094 L437.7188,29.5 L435.2656,29.5 L434.5,26.4375 L431.2188,26.4375 L430.4688,29.5 L428.0313,29.5 L431.375,17.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="56" x="453.25" y="28.1543">ProductB</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="365" x2="565" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="365" x2="565" y1="48" y2="48"/>
<ellipse cx="375" cy="59" 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="159" x="384" y="62.2104">~ProductB() = default : void</text>
<ellipse cx="375" cy="71.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="176" x="384" y="75.0151">buy(int price) const = 0 : _Bool</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L22" target="_top" title="ProductB" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L22" xlink:show="new" xlink:title="ProductB" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fjvq7ct8f8k7y)" height="81.6094" id="C_0002235759006374865842" style="stroke: #A80036; stroke-width: 1.5;" width="245" x="6" y="539"/>
<ellipse cx="96.25" cy="555" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M96.3594,550.3438 L95.2031,555.4219 L97.5313,555.4219 L96.3594,550.3438 Z M94.875,548.1094 L97.8594,548.1094 L101.2188,560.5 L98.7656,560.5 L98,557.4375 L94.7188,557.4375 L93.9688,560.5 L91.5313,560.5 L94.875,548.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="56" x="116.75" y="559.1543">ProductB</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="250" y1="571" y2="571"/>
<ellipse cx="17" cy="582" 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="219" x="26" y="585.2104">~ProductB() constexpr = default : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="7" x2="250" y1="591.8047" y2="591.8047"/>
<ellipse cx="17" cy="602.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="169" x="26" y="606.0151">buy(int price) const = 0 : bool</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="250" y1="612.6094" y2="612.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L28" target="_top" title="ProductB1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L28" xlink:show="new" xlink:title="ProductB1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fynry5siro512)" height="60.8047" id="C_0001465493024233223845" style="stroke: #A80036; stroke-width: 1.5;" width="178" x="6" y="148.5"/>
<ellipse cx="58.25" cy="164.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M61.2188,170.1406 Q60.6406,170.4375 60,170.5781 Q59.3594,170.7344 58.6563,170.7344 Q56.1563,170.7344 54.8281,169.0938 Q53.5156,167.4375 53.5156,164.3125 Q53.5156,161.1875 54.8281,159.5313 Q56.1563,157.875 58.6563,157.875 Q59.3594,157.875 60,158.0313 Q60.6563,158.1875 61.2188,158.4844 L61.2188,161.2031 Q60.5938,160.625 60,160.3594 Q59.4063,160.0781 58.7813,160.0781 Q57.4375,160.0781 56.75,161.1563 Q56.0625,162.2188 56.0625,164.3125 Q56.0625,166.4063 56.75,167.4844 Q57.4375,168.5469 58.7813,168.5469 Q59.4063,168.5469 60,168.2813 Q60.5938,168 61.2188,167.4219 L61.2188,170.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="65" x="78.75" y="168.6543">ProductB1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="183" y1="180.5" y2="180.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="183" y1="188.5" y2="188.5"/>
<ellipse cx="17" cy="199.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="152" x="26" y="202.7104">buy(int price) const : _Bool</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L28" target="_top" title="ProductB1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L28" xlink:show="new" xlink:title="ProductB1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fjvq7ct8f8k7y)" height="60.8047" id="C_0001465493024233223845" style="stroke: #A80036; stroke-width: 1.5;" width="171" x="249" y="681"/>
<ellipse cx="297.75" cy="697" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M300.7188,702.6406 Q300.1406,702.9375 299.5,703.0781 Q298.8594,703.2344 298.1563,703.2344 Q295.6563,703.2344 294.3281,701.5938 Q293.0156,699.9375 293.0156,696.8125 Q293.0156,693.6875 294.3281,692.0313 Q295.6563,690.375 298.1563,690.375 Q298.8594,690.375 299.5,690.5313 Q300.1563,690.6875 300.7188,690.9844 L300.7188,693.7031 Q300.0938,693.125 299.5,692.8594 Q298.9063,692.5781 298.2813,692.5781 Q296.9375,692.5781 296.25,693.6563 Q295.5625,694.7188 295.5625,696.8125 Q295.5625,698.9063 296.25,699.9844 Q296.9375,701.0469 298.2813,701.0469 Q298.9063,701.0469 299.5,700.7813 Q300.0938,700.5 300.7188,699.9219 L300.7188,702.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="65" x="318.25" y="701.1543">ProductB1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="250" x2="419" y1="713" y2="713"/>
<ellipse cx="260" cy="724" 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="145" x="269" y="727.2104">buy(int price) const : bool</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="250" x2="419" y1="733.8047" y2="733.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L33" target="_top" title="ProductB2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L33" xlink:show="new" xlink:title="ProductB2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fynry5siro512)" height="60.8047" id="C_0002154665562370057871" style="stroke: #A80036; stroke-width: 1.5;" width="178" x="769" y="148.5"/>
<ellipse cx="821.25" cy="164.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M824.2188,170.1406 Q823.6406,170.4375 823,170.5781 Q822.3594,170.7344 821.6563,170.7344 Q819.1563,170.7344 817.8281,169.0938 Q816.5156,167.4375 816.5156,164.3125 Q816.5156,161.1875 817.8281,159.5313 Q819.1563,157.875 821.6563,157.875 Q822.3594,157.875 823,158.0313 Q823.6563,158.1875 824.2188,158.4844 L824.2188,161.2031 Q823.5938,160.625 823,160.3594 Q822.4063,160.0781 821.7813,160.0781 Q820.4375,160.0781 819.75,161.1563 Q819.0625,162.2188 819.0625,164.3125 Q819.0625,166.4063 819.75,167.4844 Q820.4375,168.5469 821.7813,168.5469 Q822.4063,168.5469 823,168.2813 Q823.5938,168 824.2188,167.4219 L824.2188,170.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="65" x="841.75" y="168.6543">ProductB2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="770" x2="946" y1="180.5" y2="180.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="770" x2="946" y1="188.5" y2="188.5"/>
<ellipse cx="780" cy="199.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="152" x="789" y="202.7104">buy(int price) const : _Bool</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L33" target="_top" title="ProductB2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L33" xlink:show="new" xlink:title="ProductB2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fjvq7ct8f8k7y)" height="60.8047" id="C_0002154665562370057871" style="stroke: #A80036; stroke-width: 1.5;" width="171" x="43" y="681"/>
<ellipse cx="91.75" cy="697" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M94.7188,702.6406 Q94.1406,702.9375 93.5,703.0781 Q92.8594,703.2344 92.1563,703.2344 Q89.6563,703.2344 88.3281,701.5938 Q87.0156,699.9375 87.0156,696.8125 Q87.0156,693.6875 88.3281,692.0313 Q89.6563,690.375 92.1563,690.375 Q92.8594,690.375 93.5,690.5313 Q94.1563,690.6875 94.7188,690.9844 L94.7188,693.7031 Q94.0938,693.125 93.5,692.8594 Q92.9063,692.5781 92.2813,692.5781 Q90.9375,692.5781 90.25,693.6563 Q89.5625,694.7188 89.5625,696.8125 Q89.5625,698.9063 90.25,699.9844 Q90.9375,701.0469 92.2813,701.0469 Q92.9063,701.0469 93.5,700.7813 Q94.0938,700.5 94.7188,699.9219 L94.7188,702.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="65" x="112.25" y="701.1543">ProductB2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="44" x2="213" y1="713" y2="713"/>
<ellipse cx="54" cy="724" 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="145" x="63" y="727.2104">buy(int price) const : bool</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="44" x2="213" y1="733.8047" y2="733.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L38" target="_top" title="AbstractFactory" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L38" xlink:show="new" xlink:title="AbstractFactory" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fynry5siro512)" height="73.6094" id="C_0001705546469218961425" style="stroke: #A80036; stroke-width: 1.5;" width="302" x="432" y="142"/>
<ellipse cx="529.25" cy="158" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M529.3594,153.3438 L528.2031,158.4219 L530.5313,158.4219 L529.3594,153.3438 Z M527.875,151.1094 L530.8594,151.1094 L534.2188,163.5 L531.7656,163.5 L531,160.4375 L527.7188,160.4375 L526.9688,163.5 L524.5313,163.5 L527.875,151.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="99" x="549.75" y="162.1543">AbstractFactory</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="433" x2="733" y1="174" y2="174"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="433" x2="733" y1="182" y2="182"/>
<ellipse cx="443" cy="193" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="276" x="452" y="196.2104">make_a() const = 0 : std::unique_ptr&lt;ProductA&gt;</text>
<ellipse cx="443" cy="205.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="276" x="452" y="209.0151">make_b() const = 0 : std::unique_ptr&lt;ProductB&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L38" target="_top" title="AbstractFactory" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L38" xlink:show="new" xlink:title="AbstractFactory" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fjvq7ct8f8k7y)" height="73.6094" id="C_0001705546469218961425" style="stroke: #A80036; stroke-width: 1.5;" width="302" x="112.5" y="8"/>
<ellipse cx="209.75" cy="24" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M209.8594,19.3438 L208.7031,24.4219 L211.0313,24.4219 L209.8594,19.3438 Z M208.375,17.1094 L211.3594,17.1094 L214.7188,29.5 L212.2656,29.5 L211.5,26.4375 L208.2188,26.4375 L207.4688,29.5 L205.0313,29.5 L208.375,17.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="99" x="230.25" y="28.1543">AbstractFactory</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="113.5" x2="413.5" y1="40" y2="40"/>
<ellipse cx="123.5" cy="51" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="276" x="132.5" y="54.2104">make_a() const = 0 : std::unique_ptr&lt;ProductA&gt;</text>
<ellipse cx="123.5" cy="63.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="276" x="132.5" y="67.0151">make_b() const = 0 : std::unique_ptr&lt;ProductB&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="113.5" x2="413.5" y1="73.6094" y2="73.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L44" target="_top" title="Factory1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L44" xlink:show="new" xlink:title="Factory1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fynry5siro512)" height="73.6094" id="C_0000692346848484854107" style="stroke: #A80036; stroke-width: 1.5;" width="280" x="168" y="276"/>
<ellipse cx="276.75" cy="292" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M279.7188,297.6406 Q279.1406,297.9375 278.5,298.0781 Q277.8594,298.2344 277.1563,298.2344 Q274.6563,298.2344 273.3281,296.5938 Q272.0156,294.9375 272.0156,291.8125 Q272.0156,288.6875 273.3281,287.0313 Q274.6563,285.375 277.1563,285.375 Q277.8594,285.375 278.5,285.5313 Q279.1563,285.6875 279.7188,285.9844 L279.7188,288.7031 Q279.0938,288.125 278.5,287.8594 Q277.9063,287.5781 277.2813,287.5781 Q275.9375,287.5781 275.25,288.6563 Q274.5625,289.7188 274.5625,291.8125 Q274.5625,293.9063 275.25,294.9844 Q275.9375,296.0469 277.2813,296.0469 Q277.9063,296.0469 278.5,295.7813 Q279.0938,295.5 279.7188,294.9219 L279.7188,297.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="54" x="297.25" y="296.1543">Factory1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="169" x2="447" y1="308" y2="308"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="169" x2="447" y1="316" y2="316"/>
<ellipse cx="179" cy="327" 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="253" x="188" y="330.2104">make_a() const : std::unique_ptr&lt;ProductA&gt;</text>
<ellipse cx="179" cy="339.8047" 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="254" x="188" y="343.0151">make_b() const : std::unique_ptr&lt;ProductB&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L44" target="_top" title="Factory1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L44" xlink:show="new" xlink:title="Factory1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fjvq7ct8f8k7y)" height="73.6094" id="C_0000692346848484854107" style="stroke: #A80036; stroke-width: 1.5;" width="280" x="123.5" y="405"/>
<ellipse cx="232.25" cy="421" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M235.2188,426.6406 Q234.6406,426.9375 234,427.0781 Q233.3594,427.2344 232.6563,427.2344 Q230.1563,427.2344 228.8281,425.5938 Q227.5156,423.9375 227.5156,420.8125 Q227.5156,417.6875 228.8281,416.0313 Q230.1563,414.375 232.6563,414.375 Q233.3594,414.375 234,414.5313 Q234.6563,414.6875 235.2188,414.9844 L235.2188,417.7031 Q234.5938,417.125 234,416.8594 Q233.4063,416.5781 232.7813,416.5781 Q231.4375,416.5781 230.75,417.6563 Q230.0625,418.7188 230.0625,420.8125 Q230.0625,422.9063 230.75,423.9844 Q231.4375,425.0469 232.7813,425.0469 Q233.4063,425.0469 234,424.7813 Q234.5938,424.5 235.2188,423.9219 L235.2188,426.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="54" x="252.75" y="425.1543">Factory1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="124.5" x2="402.5" y1="437" y2="437"/>
<ellipse cx="134.5" cy="448" 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="253" x="143.5" y="451.2104">make_a() const : std::unique_ptr&lt;ProductA&gt;</text>
<ellipse cx="134.5" cy="460.8047" 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="254" x="143.5" y="464.0151">make_b() const : std::unique_ptr&lt;ProductB&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="124.5" x2="402.5" y1="470.6094" y2="470.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L57" target="_top" title="Factory2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00020/t00020.cc#L57" xlink:show="new" xlink:title="Factory2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fynry5siro512)" height="73.6094" id="C_0001566325870805013023" style="stroke: #A80036; stroke-width: 1.5;" width="280" x="718" y="276"/>
<ellipse cx="826.75" cy="292" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M829.7188,297.6406 Q829.1406,297.9375 828.5,298.0781 Q827.8594,298.2344 827.1563,298.2344 Q824.6563,298.2344 823.3281,296.5938 Q822.0156,294.9375 822.0156,291.8125 Q822.0156,288.6875 823.3281,287.0313 Q824.6563,285.375 827.1563,285.375 Q827.8594,285.375 828.5,285.5313 Q829.1563,285.6875 829.7188,285.9844 L829.7188,288.7031 Q829.0938,288.125 828.5,287.8594 Q827.9063,287.5781 827.2813,287.5781 Q825.9375,287.5781 825.25,288.6563 Q824.5625,289.7188 824.5625,291.8125 Q824.5625,293.9063 825.25,294.9844 Q825.9375,296.0469 827.2813,296.0469 Q827.9063,296.0469 828.5,295.7813 Q829.0938,295.5 829.7188,294.9219 L829.7188,297.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="54" x="847.25" y="296.1543">Factory2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="719" x2="997" y1="308" y2="308"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="719" x2="997" y1="316" y2="316"/>
<ellipse cx="729" cy="327" 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="253" x="738" y="330.2104">make_a() const : std::unique_ptr&lt;ProductA&gt;</text>
<ellipse cx="729" cy="339.8047" 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="254" x="738" y="343.0151">make_b() const : std::unique_ptr&lt;ProductB&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L57" target="_top" title="Factory2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00020/t00020.cc#L57" xlink:show="new" xlink:title="Factory2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fjvq7ct8f8k7y)" height="73.6094" id="C_0001566325870805013023" style="stroke: #A80036; stroke-width: 1.5;" width="280" x="333.5" y="802"/>
<ellipse cx="442.25" cy="818" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M445.2188,823.6406 Q444.6406,823.9375 444,824.0781 Q443.3594,824.2344 442.6563,824.2344 Q440.1563,824.2344 438.8281,822.5938 Q437.5156,820.9375 437.5156,817.8125 Q437.5156,814.6875 438.8281,813.0313 Q440.1563,811.375 442.6563,811.375 Q443.3594,811.375 444,811.5313 Q444.6563,811.6875 445.2188,811.9844 L445.2188,814.7031 Q444.5938,814.125 444,813.8594 Q443.4063,813.5781 442.7813,813.5781 Q441.4375,813.5781 440.75,814.6563 Q440.0625,815.7188 440.0625,817.8125 Q440.0625,819.9063 440.75,820.9844 Q441.4375,822.0469 442.7813,822.0469 Q443.4063,822.0469 444,821.7813 Q444.5938,821.5 445.2188,820.9219 L445.2188,823.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="54" x="462.75" y="822.1543">Factory2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="334.5" x2="612.5" y1="834" y2="834"/>
<ellipse cx="344.5" cy="845" 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="253" x="353.5" y="848.2104">make_a() const : std::unique_ptr&lt;ProductA&gt;</text>
<ellipse cx="344.5" cy="857.8047" 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="254" x="353.5" y="861.0151">make_b() const : std::unique_ptr&lt;ProductB&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="334.5" x2="612.5" y1="867.6094" y2="867.6094"/>
</a>
<path d="M766.14,66.21 C670.38,83.36 533.12,110.22 415,142 C407.71,143.96 400.2,146.15 392.69,148.44 " fill="none" id="C_0000425267229659464944&lt;-C_0001756496029797864207" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="765.01,59.3,785.93,62.7,767.46,73.08,765.01,59.3" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M952.89,93.73 C978.51,112.01 1006.99,132.33 1029.55,148.43 " fill="none" id="C_0000425267229659464944&lt;-C_0001531708592885216981" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="948.77,99.38,936.55,82.07,956.9,87.99,948.77,99.38" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M344.98,88.82 C290.37,108.3 227.11,130.87 177.89,148.43 " fill="none" id="C_0002235759006374865842&lt;-C_0001465493024233223845" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="342.71,82.2,363.9,82.07,347.41,95.38,342.71,82.2" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M585.51,86.17 C636.84,103.32 697.37,123.59 752,142 C758.26,144.11 764.73,146.3 771.24,148.5 " fill="none" id="C_0002235759006374865842&lt;-C_0002154665562370057871" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="583.07,92.74,566.32,79.76,587.5,79.46,583.07,92.74" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M489.6,224.83 C454.86,241.51 415.93,260.19 383.05,275.97 " fill="none" id="C_0001705546469218961425&lt;-C_0000692346848484854107" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="486.8,218.41,507.86,216.07,492.85,231.03,486.8,218.41" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M676.4,224.83 C711.14,241.51 750.07,260.19 782.95,275.97 " fill="none" id="C_0001705546469218961425&lt;-C_0001566325870805013023" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="673.15,231.03,658.14,216.07,679.2,218.41,673.15,231.03" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M308,214.81 C308,233.64 308,256.87 308,275.89 " fill="none" id="C_0001756496029797864207&lt;-C_0000692346848484854107" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="308,209.62,304,218.62,308,214.62,312,218.62,308,209.62" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M147.32,212.42 C178.34,231.65 217.72,256.05 249.73,275.89 " fill="none" id="C_0001465493024233223845&lt;-C_0000692346848484854107" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="142.8,209.62,148.3441,217.7602,147.0504,212.2533,152.5573,210.9595,142.8,209.62" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1018.68,212.42 C987.66,231.65 948.28,256.05 916.27,275.89 " fill="none" id="C_0001531708592885216981&lt;-C_0001566325870805013023" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="1023.2,209.62,1013.4427,210.9595,1018.9496,212.2533,1017.6559,217.7602,1023.2,209.62" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M858,214.81 C858,233.64 858,256.87 858,275.89 " fill="none" id="C_0002154665562370057871&lt;-C_0001566325870805013023" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="858,209.62,854,218.62,858,214.62,862,218.62,858,209.62" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M344.48,238.05 C327.61,253.77 309.81,270.35 295.21,283.96 " fill="none" id="C_0000425267229659464944&lt;-C_0001756496029797864207" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="339.88,232.78,359.28,224.26,349.42,243.02,339.88,232.78" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M458.18,238.52 C472.11,252.92 486.71,268.72 499.5,284 C534.96,326.36 571.51,379.11 593.1,411.4 " fill="none" id="C_0000425267229659464944&lt;-C_0001531708592885216981" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="453.03,243.27,444.02,224.09,463.02,233.46,453.03,243.27" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M209.28,631.78 C235.74,648.42 264.25,666.34 287.38,680.88 " fill="none" id="C_0002235759006374865842&lt;-C_0001465493024233223845" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="205.48,637.66,192.27,621.09,212.93,625.81,205.48,637.66" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M128.5,641.55 C128.5,655.26 128.5,669.22 128.5,680.96 " fill="none" id="C_0002235759006374865842&lt;-C_0002154665562370057871" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="121.5,641.26,128.5,621.26,135.5,641.26,121.5,641.26" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M300.38,82.09 C318.03,99.35 339.3,120.16 357.85,138.31 " fill="none" id="C_0001705546469218961425-&gt;C_0000425267229659464944" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="361.52,141.91,357.8918,132.7538,357.9489,138.4104,352.2924,138.4675,361.52,141.91" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M205.31,82.14 C184.51,97.98 162.92,118.38 149.5,142 C74.94,273.3 90.18,328.89 106.5,479 C108.47,497.1 112.38,516.72 116.37,533.75 " fill="none" id="C_0001705546469218961425-&gt;C_0002235759006374865842" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="117.61,538.94,119.3884,529.253,116.4377,534.0794,111.6114,531.1287,117.61,538.94" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M313.81,404.81 C332.99,388.57 353.38,367.91 366.5,345 C386.91,309.38 395.75,263.18 399.58,229.41 " fill="none" id="C_0000692346848484854107-&gt;C_0000425267229659464944" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="400.15,224.1,395.1967,232.6126,399.6072,229.0705,403.1494,233.481,400.15,224.1" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M227.68,479.09 C210.54,496.35 189.88,517.16 171.86,535.31 " fill="none" id="C_0000692346848484854107-&gt;C_0002235759006374865842" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="168.3,538.91,177.478,535.3373,171.8212,535.3602,171.7983,529.7034,168.3,538.91" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M221.83,98.4 C179.15,158.85 123.85,260.73 160.5,345 C170.79,368.65 190.09,389.11 209.23,404.99 " fill="none" id="C_0001705546469218961425&lt;-C_0000692346848484854107" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="216.27,94.14,233.73,82.13,227.57,102.41,216.27,94.14" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M473.5,801.82 C473.5,752.08 473.5,659.75 473.5,581 C473.5,441 473.5,441 473.5,441 C473.5,364.32 443.77,279.26 422.79,228.78 " fill="none" id="C_0001566325870805013023-&gt;C_0000425267229659464944" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="420.78,224,420.56,233.8464,422.7081,228.6133,427.9413,230.7614,420.78,224" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M333.44,826.93 C216.81,814.45 63.82,789.4 25.5,742 C-4.69,704.65 32.17,658.08 69.93,624.64 " fill="none" id="C_0001566325870805013023-&gt;C_0002235759006374865842" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="74.05,621.04,64.6428,623.9562,70.2871,624.3325,69.9108,629.9768,74.05,621.04" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M434.59,68.78 C575.25,98.26 751.5,164.86 751.5,313.5 C751.5,313.5 751.5,313.5 751.5,581 C751.5,686.99 641.2,761.42 559.56,802 " fill="none" id="C_0001705546469218961425&lt;-C_0001566325870805013023" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="432.81,75.56,414.56,64.78,435.55,61.84,432.81,75.56" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M263.5,350.38 C263.5,367.31 263.5,387.65 263.5,404.76 " fill="none" id="C_0001756496029797864207&lt;-C_0000692346848484854107" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="263.5,345.24,259.5,354.24,263.5,350.24,267.5,354.24,263.5,345.24" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M325.25,675.67 C311.75,624.79 286.76,530.64 273.08,479.08 " fill="none" id="C_0001465493024233223845&lt;-C_0000692346848484854107" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="326.6,680.75,328.1496,671.0238,325.3135,675.9184,320.4189,673.0823,326.6,680.75" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M600.38,477.43 C574.28,551.62 512.92,725.99 486.25,801.77 " fill="none" id="C_0001531708592885216981&lt;-C_0001566325870805013023" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="602.05,472.69,595.2725,479.836,600.3792,477.4026,602.8126,482.5093,602.05,472.69" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M214.77,743.88 C263.21,761.5 323.86,783.56 374.26,801.9 " fill="none" id="C_0002154665562370057871&lt;-C_0001566325870805013023" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="209.82,742.08,216.9045,748.9218,214.5173,743.7933,219.6458,741.4061,209.82,742.08" style="stroke: #A80036; stroke-width: 1.0;"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 25 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="493px" preserveAspectRatio="none" style="width:1108px;height:493px;" version="1.1" viewBox="0 0 1108 493" width="1108px" 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="509px" preserveAspectRatio="none" style="width:990px;height:509px;" version="1.1" viewBox="0 0 990 509" width="990px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1bi0s9xeux2qr" width="300%" x="-1" y="-1">
<filter height="300%" id="f1qd8hvw4zl58t" 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,119 +9,121 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00021/t00021.cc#L9" target="_top" title="Visitor" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00021/t00021.cc#L9" xlink:show="new" xlink:title="Visitor" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1bi0s9xeux2qr)" height="86.4141" id="C_0001668671110672744395" style="stroke: #A80036; stroke-width: 1.5;" width="281" x="411" y="142"/>
<ellipse cx="528.25" cy="158" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M528.3594,153.3438 L527.2031,158.4219 L529.5313,158.4219 L528.3594,153.3438 Z M526.875,151.1094 L529.8594,151.1094 L533.2188,163.5 L530.7656,163.5 L530,160.4375 L526.7188,160.4375 L525.9688,163.5 L523.5313,163.5 L526.875,151.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="38" x="548.75" y="162.1543">Visitor</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="412" x2="691" y1="174" y2="174"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="412" x2="691" y1="182" y2="182"/>
<ellipse cx="422" cy="193" 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="144" x="431" y="196.2104">~Visitor() = default : void</text>
<ellipse cx="422" cy="205.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="255" x="431" y="209.0151">visit_A(const class A &amp; item) const = 0 : void</text>
<ellipse cx="422" cy="218.6094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="255" x="431" y="221.8198">visit_B(const class B &amp; item) const = 0 : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00021/t00021.cc#L9" target="_top" title="Visitor" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00021/t00021.cc#L9" xlink:show="new" xlink:title="Visitor" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qd8hvw4zl58t)" height="94.4141" id="C_0001668671110672744395" style="stroke: #A80036; stroke-width: 1.5;" width="249" x="368" y="150"/>
<ellipse cx="469.25" cy="166" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M469.3594,161.3438 L468.2031,166.4219 L470.5313,166.4219 L469.3594,161.3438 Z M467.875,159.1094 L470.8594,159.1094 L474.2188,171.5 L471.7656,171.5 L471,168.4375 L467.7188,168.4375 L466.9688,171.5 L464.5313,171.5 L467.875,159.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="38" x="489.75" y="170.1543">Visitor</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="369" x2="616" y1="182" y2="182"/>
<ellipse cx="379" cy="193" 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="204" x="388" y="196.2104">~Visitor() constexpr = default : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="369" x2="616" y1="202.8047" y2="202.8047"/>
<ellipse cx="379" cy="213.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="223" x="388" y="217.0151">visit_A(const A &amp; item) const = 0 : void</text>
<ellipse cx="379" cy="226.6094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="223" x="388" y="229.8198">visit_B(const B &amp; item) const = 0 : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="369" x2="616" y1="236.4141" y2="236.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00021/t00021.cc#L16" target="_top" title="Visitor1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00021/t00021.cc#L16" xlink:show="new" xlink:title="Visitor1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1bi0s9xeux2qr)" height="73.6094" id="C_0001028369219400401946" style="stroke: #A80036; stroke-width: 1.5;" width="261" x="125" y="288"/>
<ellipse cx="227.75" cy="304" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M230.7188,309.6406 Q230.1406,309.9375 229.5,310.0781 Q228.8594,310.2344 228.1563,310.2344 Q225.6563,310.2344 224.3281,308.5938 Q223.0156,306.9375 223.0156,303.8125 Q223.0156,300.6875 224.3281,299.0313 Q225.6563,297.375 228.1563,297.375 Q228.8594,297.375 229.5,297.5313 Q230.1563,297.6875 230.7188,297.9844 L230.7188,300.7031 Q230.0938,300.125 229.5,299.8594 Q228.9063,299.5781 228.2813,299.5781 Q226.9375,299.5781 226.25,300.6563 Q225.5625,301.7188 225.5625,303.8125 Q225.5625,305.9063 226.25,306.9844 Q226.9375,308.0469 228.2813,308.0469 Q228.9063,308.0469 229.5,307.7813 Q230.0938,307.5 230.7188,306.9219 L230.7188,309.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="47" x="248.25" y="308.1543">Visitor1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="126" x2="385" y1="320" y2="320"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="126" x2="385" y1="328" y2="328"/>
<ellipse cx="136" cy="339" 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="233" x="145" y="342.2104">visit_A(const class A &amp; item) const : void</text>
<ellipse cx="136" cy="351.8047" 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="235" x="145" y="355.0151">visit_B(const class B &amp; item) const : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00021/t00021.cc#L16" target="_top" title="Visitor1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00021/t00021.cc#L16" xlink:show="new" xlink:title="Visitor1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qd8hvw4zl58t)" height="73.6094" id="C_0001028369219400401946" style="stroke: #A80036; stroke-width: 1.5;" width="227" x="117" y="304"/>
<ellipse cx="202.75" cy="320" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M205.7188,325.6406 Q205.1406,325.9375 204.5,326.0781 Q203.8594,326.2344 203.1563,326.2344 Q200.6563,326.2344 199.3281,324.5938 Q198.0156,322.9375 198.0156,319.8125 Q198.0156,316.6875 199.3281,315.0313 Q200.6563,313.375 203.1563,313.375 Q203.8594,313.375 204.5,313.5313 Q205.1563,313.6875 205.7188,313.9844 L205.7188,316.7031 Q205.0938,316.125 204.5,315.8594 Q203.9063,315.5781 203.2813,315.5781 Q201.9375,315.5781 201.25,316.6563 Q200.5625,317.7188 200.5625,319.8125 Q200.5625,321.9063 201.25,322.9844 Q201.9375,324.0469 203.2813,324.0469 Q203.9063,324.0469 204.5,323.7813 Q205.0938,323.5 205.7188,322.9219 L205.7188,325.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="47" x="223.25" y="324.1543">Visitor1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="118" x2="343" y1="336" y2="336"/>
<ellipse cx="128" cy="347" 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="199" x="137" y="350.2104">visit_A(const A &amp; item) const : void</text>
<ellipse cx="128" cy="359.8047" 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="201" x="137" y="363.0151">visit_B(const B &amp; item) const : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="118" x2="343" y1="369.6094" y2="369.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00021/t00021.cc#L22" target="_top" title="Visitor2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00021/t00021.cc#L22" xlink:show="new" xlink:title="Visitor2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1bi0s9xeux2qr)" height="73.6094" id="C_0001710373315476287130" style="stroke: #A80036; stroke-width: 1.5;" width="261" x="421" y="288"/>
<ellipse cx="523.75" cy="304" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M526.7188,309.6406 Q526.1406,309.9375 525.5,310.0781 Q524.8594,310.2344 524.1563,310.2344 Q521.6563,310.2344 520.3281,308.5938 Q519.0156,306.9375 519.0156,303.8125 Q519.0156,300.6875 520.3281,299.0313 Q521.6563,297.375 524.1563,297.375 Q524.8594,297.375 525.5,297.5313 Q526.1563,297.6875 526.7188,297.9844 L526.7188,300.7031 Q526.0938,300.125 525.5,299.8594 Q524.9063,299.5781 524.2813,299.5781 Q522.9375,299.5781 522.25,300.6563 Q521.5625,301.7188 521.5625,303.8125 Q521.5625,305.9063 522.25,306.9844 Q522.9375,308.0469 524.2813,308.0469 Q524.9063,308.0469 525.5,307.7813 Q526.0938,307.5 526.7188,306.9219 L526.7188,309.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="47" x="544.25" y="308.1543">Visitor2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="422" x2="681" y1="320" y2="320"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="422" x2="681" y1="328" y2="328"/>
<ellipse cx="432" cy="339" 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="233" x="441" y="342.2104">visit_A(const class A &amp; item) const : void</text>
<ellipse cx="432" cy="351.8047" 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="235" x="441" y="355.0151">visit_B(const class B &amp; item) const : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00021/t00021.cc#L22" target="_top" title="Visitor2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00021/t00021.cc#L22" xlink:show="new" xlink:title="Visitor2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qd8hvw4zl58t)" height="73.6094" id="C_0001710373315476287130" style="stroke: #A80036; stroke-width: 1.5;" width="227" x="379" y="304"/>
<ellipse cx="464.75" cy="320" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M467.7188,325.6406 Q467.1406,325.9375 466.5,326.0781 Q465.8594,326.2344 465.1563,326.2344 Q462.6563,326.2344 461.3281,324.5938 Q460.0156,322.9375 460.0156,319.8125 Q460.0156,316.6875 461.3281,315.0313 Q462.6563,313.375 465.1563,313.375 Q465.8594,313.375 466.5,313.5313 Q467.1563,313.6875 467.7188,313.9844 L467.7188,316.7031 Q467.0938,316.125 466.5,315.8594 Q465.9063,315.5781 465.2813,315.5781 Q463.9375,315.5781 463.25,316.6563 Q462.5625,317.7188 462.5625,319.8125 Q462.5625,321.9063 463.25,322.9844 Q463.9375,324.0469 465.2813,324.0469 Q465.9063,324.0469 466.5,323.7813 Q467.0938,323.5 467.7188,322.9219 L467.7188,325.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="47" x="485.25" y="324.1543">Visitor2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="380" x2="605" y1="336" y2="336"/>
<ellipse cx="390" cy="347" 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="199" x="399" y="350.2104">visit_A(const A &amp; item) const : void</text>
<ellipse cx="390" cy="359.8047" 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="201" x="399" y="363.0151">visit_B(const B &amp; item) const : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="380" x2="605" y1="369.6094" y2="369.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00021/t00021.cc#L28" target="_top" title="Visitor3" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00021/t00021.cc#L28" xlink:show="new" xlink:title="Visitor3" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1bi0s9xeux2qr)" height="73.6094" id="C_0001399026228179178025" style="stroke: #A80036; stroke-width: 1.5;" width="261" x="717" y="288"/>
<ellipse cx="819.75" cy="304" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M822.7188,309.6406 Q822.1406,309.9375 821.5,310.0781 Q820.8594,310.2344 820.1563,310.2344 Q817.6563,310.2344 816.3281,308.5938 Q815.0156,306.9375 815.0156,303.8125 Q815.0156,300.6875 816.3281,299.0313 Q817.6563,297.375 820.1563,297.375 Q820.8594,297.375 821.5,297.5313 Q822.1563,297.6875 822.7188,297.9844 L822.7188,300.7031 Q822.0938,300.125 821.5,299.8594 Q820.9063,299.5781 820.2813,299.5781 Q818.9375,299.5781 818.25,300.6563 Q817.5625,301.7188 817.5625,303.8125 Q817.5625,305.9063 818.25,306.9844 Q818.9375,308.0469 820.2813,308.0469 Q820.9063,308.0469 821.5,307.7813 Q822.0938,307.5 822.7188,306.9219 L822.7188,309.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="47" x="840.25" y="308.1543">Visitor3</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="718" x2="977" y1="320" y2="320"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="718" x2="977" y1="328" y2="328"/>
<ellipse cx="728" cy="339" 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="233" x="737" y="342.2104">visit_A(const class A &amp; item) const : void</text>
<ellipse cx="728" cy="351.8047" 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="235" x="737" y="355.0151">visit_B(const class B &amp; item) const : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00021/t00021.cc#L28" target="_top" title="Visitor3" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00021/t00021.cc#L28" xlink:show="new" xlink:title="Visitor3" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qd8hvw4zl58t)" height="73.6094" id="C_0001399026228179178025" style="stroke: #A80036; stroke-width: 1.5;" width="227" x="641" y="304"/>
<ellipse cx="726.75" cy="320" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M729.7188,325.6406 Q729.1406,325.9375 728.5,326.0781 Q727.8594,326.2344 727.1563,326.2344 Q724.6563,326.2344 723.3281,324.5938 Q722.0156,322.9375 722.0156,319.8125 Q722.0156,316.6875 723.3281,315.0313 Q724.6563,313.375 727.1563,313.375 Q727.8594,313.375 728.5,313.5313 Q729.1563,313.6875 729.7188,313.9844 L729.7188,316.7031 Q729.0938,316.125 728.5,315.8594 Q727.9063,315.5781 727.2813,315.5781 Q725.9375,315.5781 725.25,316.6563 Q724.5625,317.7188 724.5625,319.8125 Q724.5625,321.9063 725.25,322.9844 Q725.9375,324.0469 727.2813,324.0469 Q727.9063,324.0469 728.5,323.7813 Q729.0938,323.5 729.7188,322.9219 L729.7188,325.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="47" x="747.25" y="324.1543">Visitor3</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="642" x2="867" y1="336" y2="336"/>
<ellipse cx="652" cy="347" 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="199" x="661" y="350.2104">visit_A(const A &amp; item) const : void</text>
<ellipse cx="652" cy="359.8047" 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="201" x="661" y="363.0151">visit_B(const B &amp; item) const : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="642" x2="867" y1="369.6094" y2="369.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00021/t00021.cc#L34" target="_top" title="Item" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00021/t00021.cc#L34" xlink:show="new" xlink:title="Item" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1bi0s9xeux2qr)" height="73.6094" id="C_0001491568826758947722" style="stroke: #A80036; stroke-width: 1.5;" width="319" x="392" y="8"/>
<ellipse cx="533.25" cy="24" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M533.3594,19.3438 L532.2031,24.4219 L534.5313,24.4219 L533.3594,19.3438 Z M531.875,17.1094 L534.8594,17.1094 L538.2188,29.5 L535.7656,29.5 L535,26.4375 L531.7188,26.4375 L530.9688,29.5 L528.5313,29.5 L531.875,17.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="28" x="553.75" y="28.1543">Item</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="393" x2="710" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="393" x2="710" y1="48" y2="48"/>
<ellipse cx="403" cy="59" 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="133" x="412" y="62.2104">~Item() = default : void</text>
<ellipse cx="403" cy="71.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="293" x="412" y="75.0151">accept(const class Visitor &amp; visitor) const = 0 : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00021/t00021.cc#L34" target="_top" title="Item" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00021/t00021.cc#L34" xlink:show="new" xlink:title="Item" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qd8hvw4zl58t)" height="81.6094" id="C_0001491568826758947722" style="stroke: #A80036; stroke-width: 1.5;" width="287" x="349" y="8"/>
<ellipse cx="474.25" cy="24" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M474.3594,19.3438 L473.2031,24.4219 L475.5313,24.4219 L474.3594,19.3438 Z M472.875,17.1094 L475.8594,17.1094 L479.2188,29.5 L476.7656,29.5 L476,26.4375 L472.7188,26.4375 L471.9688,29.5 L469.5313,29.5 L472.875,17.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="28" x="494.75" y="28.1543">Item</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="350" x2="635" y1="40" y2="40"/>
<ellipse cx="360" cy="51" 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="193" x="369" y="54.2104">~Item() constexpr = default : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="350" x2="635" y1="60.8047" y2="60.8047"/>
<ellipse cx="360" cy="71.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="261" x="369" y="75.0151">accept(const Visitor &amp; visitor) const = 0 : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="350" x2="635" y1="81.6094" y2="81.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00021/t00021.cc#L40" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00021/t00021.cc#L40" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1bi0s9xeux2qr)" height="60.8047" id="C_0001494142745564026823" style="stroke: #A80036; stroke-width: 1.5;" width="299" x="6" y="422"/>
<ellipse cx="147.25" cy="438" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M150.2188,443.6406 Q149.6406,443.9375 149,444.0781 Q148.3594,444.2344 147.6563,444.2344 Q145.1563,444.2344 143.8281,442.5938 Q142.5156,440.9375 142.5156,437.8125 Q142.5156,434.6875 143.8281,433.0313 Q145.1563,431.375 147.6563,431.375 Q148.3594,431.375 149,431.5313 Q149.6563,431.6875 150.2188,431.9844 L150.2188,434.7031 Q149.5938,434.125 149,433.8594 Q148.4063,433.5781 147.7813,433.5781 Q146.4375,433.5781 145.75,434.6563 Q145.0625,435.7188 145.0625,437.8125 Q145.0625,439.9063 145.75,440.9844 Q146.4375,442.0469 147.7813,442.0469 Q148.4063,442.0469 149,441.7813 Q149.5938,441.5 150.2188,440.9219 L150.2188,443.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="167.75" y="442.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="304" y1="454" y2="454"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="304" y1="462" y2="462"/>
<ellipse cx="17" cy="473" 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="273" x="26" y="476.2104">accept(const class Visitor &amp; visitor) const : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00021/t00021.cc#L40" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00021/t00021.cc#L40" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qd8hvw4zl58t)" height="60.8047" id="C_0001494142745564026823" style="stroke: #A80036; stroke-width: 1.5;" width="265" x="6" y="438"/>
<ellipse cx="130.25" cy="454" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M133.2188,459.6406 Q132.6406,459.9375 132,460.0781 Q131.3594,460.2344 130.6563,460.2344 Q128.1563,460.2344 126.8281,458.5938 Q125.5156,456.9375 125.5156,453.8125 Q125.5156,450.6875 126.8281,449.0313 Q128.1563,447.375 130.6563,447.375 Q131.3594,447.375 132,447.5313 Q132.6563,447.6875 133.2188,447.9844 L133.2188,450.7031 Q132.5938,450.125 132,449.8594 Q131.4063,449.5781 130.7813,449.5781 Q129.4375,449.5781 128.75,450.6563 Q128.0625,451.7188 128.0625,453.8125 Q128.0625,455.9063 128.75,456.9844 Q129.4375,458.0469 130.7813,458.0469 Q131.4063,458.0469 132,457.7813 Q132.5938,457.5 133.2188,456.9219 L133.2188,459.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="150.75" y="458.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="270" y1="470" y2="470"/>
<ellipse cx="17" cy="481" 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="26" y="484.2104">accept(const Visitor &amp; visitor) const : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="270" y1="490.8047" y2="490.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00021/t00021.cc#L45" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00021/t00021.cc#L45" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1bi0s9xeux2qr)" height="60.8047" id="C_0001452948650450999568" style="stroke: #A80036; stroke-width: 1.5;" width="299" x="798" y="422"/>
<ellipse cx="939.25" cy="438" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M942.2188,443.6406 Q941.6406,443.9375 941,444.0781 Q940.3594,444.2344 939.6563,444.2344 Q937.1563,444.2344 935.8281,442.5938 Q934.5156,440.9375 934.5156,437.8125 Q934.5156,434.6875 935.8281,433.0313 Q937.1563,431.375 939.6563,431.375 Q940.3594,431.375 941,431.5313 Q941.6563,431.6875 942.2188,431.9844 L942.2188,434.7031 Q941.5938,434.125 941,433.8594 Q940.4063,433.5781 939.7813,433.5781 Q938.4375,433.5781 937.75,434.6563 Q937.0625,435.7188 937.0625,437.8125 Q937.0625,439.9063 937.75,440.9844 Q938.4375,442.0469 939.7813,442.0469 Q940.4063,442.0469 941,441.7813 Q941.5938,441.5 942.2188,440.9219 L942.2188,443.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="959.75" y="442.1543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="799" x2="1096" y1="454" y2="454"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="799" x2="1096" y1="462" y2="462"/>
<ellipse cx="809" cy="473" 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="273" x="818" y="476.2104">accept(const class Visitor &amp; visitor) const : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00021/t00021.cc#L45" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00021/t00021.cc#L45" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1qd8hvw4zl58t)" height="60.8047" id="C_0001452948650450999568" style="stroke: #A80036; stroke-width: 1.5;" width="265" x="714" y="438"/>
<ellipse cx="838.25" cy="454" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M841.2188,459.6406 Q840.6406,459.9375 840,460.0781 Q839.3594,460.2344 838.6563,460.2344 Q836.1563,460.2344 834.8281,458.5938 Q833.5156,456.9375 833.5156,453.8125 Q833.5156,450.6875 834.8281,449.0313 Q836.1563,447.375 838.6563,447.375 Q839.3594,447.375 840,447.5313 Q840.6563,447.6875 841.2188,447.9844 L841.2188,450.7031 Q840.5938,450.125 840,449.8594 Q839.4063,449.5781 838.7813,449.5781 Q837.4375,449.5781 836.75,450.6563 Q836.0625,451.7188 836.0625,453.8125 Q836.0625,455.9063 836.75,456.9844 Q837.4375,458.0469 838.7813,458.0469 Q839.4063,458.0469 840,457.7813 Q840.5938,457.5 841.2188,456.9219 L841.2188,459.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="858.75" y="458.1543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="715" x2="978" y1="470" y2="470"/>
<ellipse cx="725" cy="481" 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="734" y="484.2104">accept(const Visitor &amp; visitor) const : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="715" x2="978" y1="490.8047" y2="490.8047"/>
</a>
<path d="M410.8,197.84 C289.94,211.64 129.48,239.04 90.5,288 C60.4,325.81 88.26,381.94 116.78,417.62 " fill="none" id="C_0001668671110672744395-&gt;C_0001494142745564026823" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="120.26,421.86,117.651,412.363,117.0915,417.9921,111.4624,417.4326,120.26,421.86" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M145.01,421.86 C125.62,386.53 94.17,327.34 125.5,288 C160.93,243.5 296.72,216.81 405.71,201.96 " fill="none" id="C_0001494142745564026823-&gt;C_0001668671110672744395" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="410.88,201.26,401.4246,198.5042,405.9252,201.9311,402.4983,206.4318,410.88,201.26" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M692.08,201.15 C802.22,215.83 942.41,242.68 978.5,288 C1008.48,325.65 980.97,381.48 961.29,417.18 " fill="none" id="C_0001668671110672744395-&gt;C_0001452948650450999568" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="958.7,421.86,966.5674,415.9352,961.1282,417.4892,959.5742,412.05,958.7,421.86" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M983.45,421.86 C1013.38,386.53 1044.83,327.34 1013.5,288 C974.96,239.6 817.69,212.26 697.1,198.32 " fill="none" id="C_0001452948650450999568-&gt;C_0001668671110672744395" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="692.1,197.75,700.5827,202.7543,697.0671,198.3226,701.4989,194.807,692.1,197.75" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M226.58,362.3 C212.75,379.65 196.29,400.31 182.7,417.37 " fill="none" id="C_0001028369219400401946-&gt;C_0001494142745564026823" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="179.31,421.62,188.0436,417.0676,182.423,417.7073,181.7833,412.0867,179.31,421.62" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M386.12,358.34 C391.99,359.61 397.8,360.84 403.5,362 C534.02,388.57 683.4,412.7 792.56,429.19 " fill="none" id="C_0001028369219400401946-&gt;C_0001452948650450999568" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="797.73,429.97,789.4244,424.6768,792.7855,429.2269,788.2355,432.588,797.73,429.97" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M442.93,236.62 C406.43,253.63 366.48,272.26 332.88,287.93 " fill="none" id="C_0001668671110672744395&lt;-C_0001028369219400401946" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="440,230.26,461.08,228.15,445.91,242.95,440,230.26" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M437.76,362.05 C379.64,380.47 309.62,402.66 253.85,420.33 " fill="none" id="C_0001710373315476287130-&gt;C_0001494142745564026823" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="248.84,421.92,258.6283,423.0101,253.6058,420.4075,256.2084,415.3849,248.84,421.92" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M665.24,362.05 C723.36,380.47 793.38,402.66 849.15,420.33 " fill="none" id="C_0001710373315476287130-&gt;C_0001452948650450999568" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="854.16,421.92,846.7916,415.3849,849.3942,420.4075,844.3717,423.0101,854.16,421.92" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M551.5,248.62 C551.5,262 551.5,275.71 551.5,287.7 " fill="none" id="C_0001668671110672744395&lt;-C_0001710373315476287130" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="544.5,248.15,551.5,228.15,558.5,248.15,544.5,248.15" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M716.88,358.34 C711.01,359.61 705.2,360.84 699.5,362 C568.98,388.57 419.6,412.7 310.44,429.19 " fill="none" id="C_0001399026228179178025-&gt;C_0001494142745564026823" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="305.27,429.97,314.7645,432.588,310.2145,429.2269,313.5756,424.6768,305.27,429.97" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M876.42,362.3 C890.25,379.65 906.71,400.31 920.3,417.37 " fill="none" id="C_0001399026228179178025-&gt;C_0001452948650450999568" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="923.69,421.62,921.2167,412.0867,920.577,417.7073,914.9564,417.0676,923.69,421.62" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M660.07,236.62 C696.57,253.63 736.52,272.26 770.12,287.93 " fill="none" id="C_0001668671110672744395&lt;-C_0001399026228179178025" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="657.09,242.95,641.92,228.15,663,230.26,657.09,242.95" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M551.5,82.26 C551.5,98.76 551.5,118.51 551.5,136.2 " fill="none" id="C_0001491568826758947722-&gt;C_0001668671110672744395" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="551.5,141.62,555.5,132.62,551.5,136.62,547.5,132.62,551.5,141.62" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M376.05,88.27 C272.31,123.27 149.29,184.55 86.5,288 C69.44,316.12 75.89,330.87 86.5,362 C94.16,384.47 109.99,405.69 124.56,421.83 " fill="none" id="C_0001491568826758947722&lt;-C_0001494142745564026823" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="373.99,81.58,395.17,82.04,378.33,94.89,373.99,81.58" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M730.63,83.4 C841.81,116.86 976.11,178.25 1044.5,288 C1061.89,315.91 1057.69,331.87 1044.5,362 C1033.93,386.14 1013.28,406.65 993.74,421.92 " fill="none" id="C_0001491568826758947722&lt;-C_0001452948650450999568" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="728.48,90.07,711.22,77.77,732.38,76.62,728.48,90.07" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M367.78,212.91 C259.99,229.31 116.66,259.4 82.5,304 C53.51,341.84 77.4,397.97 102.9,433.63 " fill="none" id="C_0001668671110672744395-&gt;C_0001494142745564026823" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="106.02,437.88,103.9189,428.2579,103.0613,433.8493,97.4699,432.9918,106.02,437.88" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M130.77,437.88 C114.43,402.56 87.33,343.38 117.5,304 C148.16,263.97 266.75,235.63 362.59,218.39 " fill="none" id="C_0001494142745564026823-&gt;C_0001668671110672744395" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="367.72,217.48,358.161,215.1081,362.7964,218.3506,359.5539,222.9859,367.72,217.48" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M617.1,217.3 C714.14,234.43 837.18,263.12 868.5,304 C897.37,341.69 873.79,397.51 857.14,433.19 " fill="none" id="C_0001668671110672744395-&gt;C_0001452948650450999568" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="854.94,437.88,862.3718,431.4172,857.0552,433.3494,855.1229,428.0328,854.94,437.88" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M879.69,437.88 C906.57,402.56 933.67,343.38 903.5,304 C869.79,259.99 729.8,230.11 622.31,213.57 " fill="none" id="C_0001452948650450999568-&gt;C_0001668671110672744395" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="617.22,212.8,625.5106,218.1166,622.1624,213.5571,626.7219,210.2088,617.22,212.8" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M203.89,378.3 C191.17,395.65 176.03,416.31 163.52,433.37 " fill="none" id="C_0001028369219400401946-&gt;C_0001494142745564026823" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="160.4,437.62,168.9501,432.7318,163.3587,433.5893,162.5011,427.9979,160.4,437.62" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M344.31,373.91 C350.11,375.34 355.87,376.71 361.5,378 C477.83,404.67 611.25,428.83 708.68,445.3 " fill="none" id="C_0001028369219400401946-&gt;C_0001452948650450999568" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="713.87,446.18,705.6577,440.7433,708.9392,445.3511,704.3314,448.6325,713.87,446.18" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M389.49,253.83 C358.5,270.63 325.3,288.62 297.31,303.79 " fill="none" id="C_0001668671110672744395&lt;-C_0001028369219400401946" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="386.52,247.48,407.44,244.1,393.19,259.79,386.52,247.48" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M390.58,378.13 C338.74,396.51 276.35,418.63 226.61,436.26 " fill="none" id="C_0001710373315476287130-&gt;C_0001494142745564026823" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="221.83,437.96,231.65,438.7132,226.541,436.2847,228.9695,431.1756,221.83,437.96" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M594.42,378.13 C646.26,396.51 708.65,418.63 758.39,436.26 " fill="none" id="C_0001710373315476287130-&gt;C_0001452948650450999568" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="763.17,437.96,756.0305,431.1756,758.459,436.2847,753.35,438.7132,763.17,437.96" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M492.5,264.22 C492.5,277.76 492.5,291.54 492.5,303.56 " fill="none" id="C_0001668671110672744395&lt;-C_0001710373315476287130" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="485.5,264.1,492.5,244.1,499.5,264.1,485.5,264.1" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M640.69,373.91 C634.89,375.34 629.13,376.71 623.5,378 C507.17,404.67 373.75,428.83 276.32,445.3 " fill="none" id="C_0001399026228179178025-&gt;C_0001494142745564026823" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="271.13,446.18,280.6686,448.6325,276.0608,445.3511,279.3423,440.7433,271.13,446.18" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M781.11,378.3 C793.83,395.65 808.97,416.31 821.48,433.37 " fill="none" id="C_0001399026228179178025-&gt;C_0001452948650450999568" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="824.6,437.62,822.4989,427.9979,821.6413,433.5893,816.0499,432.7318,824.6,437.62" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M595.51,253.83 C626.5,270.63 659.7,288.62 687.69,303.79 " fill="none" id="C_0001668671110672744395&lt;-C_0001399026228179178025" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="591.81,259.79,577.56,244.1,598.48,247.48,591.81,259.79" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M492.5,90.28 C492.5,107.03 492.5,126.68 492.5,144.47 " fill="none" id="C_0001491568826758947722-&gt;C_0001668671110672744395" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="492.5,149.92,496.5,140.92,492.5,144.92,488.5,140.92,492.5,149.92" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M345.55,97.58 C250.88,136.76 135.26,202.59 78.5,304 C53.84,348.06 86.89,404.22 112.84,437.93 " fill="none" id="C_0001491568826758947722&lt;-C_0001494142745564026823" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="343.01,91.06,364.18,90.1,348.23,104.05,343.01,91.06" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M654.92,97.14 C754.72,135.45 874.58,200.46 934.5,304 C950.97,332.47 946.96,347.56 934.5,378 C924.84,401.6 905.63,422.32 887.62,437.86 " fill="none" id="C_0001491568826758947722&lt;-C_0001452948650450999568" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="652.2,103.6,635.89,90.07,657.08,90.48,652.2,103.6" style="stroke: #A80036; stroke-width: 1.0;"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -47,9 +47,248 @@ protected:
void method1() override { }
void method2() override { }
};
}
}
} // namespace t00022
} // namespace clanguml
```
## Generated UML diagrams
![t00022_class](./t00022_class.svg "Template method pattern")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00022::A",
"id": "2012435893382068755",
"is_abstract": true,
"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": "template_method",
"parameters": [],
"type": "void"
},
{
"access": "protected",
"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": true,
"is_static": false,
"is_virtual": true,
"name": "method1",
"parameters": [],
"type": "void"
},
{
"access": "protected",
"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": true,
"is_static": false,
"is_virtual": true,
"name": "method2",
"parameters": [],
"type": "void"
}
],
"name": "A",
"namespace": "clanguml::t00022",
"source_location": {
"file": "../../tests/t00022/t00022.cc",
"line": 6
},
"template_parameters": [],
"type": "class"
},
{
"bases": [
{
"access": "public",
"id": "2012435893382068755",
"is_virtual": false,
"name": "clanguml::t00022::A"
}
],
"display_name": "clanguml::t00022::A1",
"id": "2282061426381077447",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [
{
"access": "protected",
"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": true,
"name": "method1",
"parameters": [],
"type": "void"
},
{
"access": "protected",
"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": true,
"name": "method2",
"parameters": [],
"type": "void"
}
],
"name": "A1",
"namespace": "clanguml::t00022",
"source_location": {
"file": "../../tests/t00022/t00022.cc",
"line": 19
},
"template_parameters": [],
"type": "class"
},
{
"bases": [
{
"access": "public",
"id": "2012435893382068755",
"is_virtual": false,
"name": "clanguml::t00022::A"
}
],
"display_name": "clanguml::t00022::A2",
"id": "158819862916671538",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [
{
"access": "protected",
"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": true,
"name": "method1",
"parameters": [],
"type": "void"
},
{
"access": "protected",
"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": true,
"name": "method2",
"parameters": [],
"type": "void"
}
],
"name": "A2",
"namespace": "clanguml::t00022",
"source_location": {
"file": "../../tests/t00022/t00022.cc",
"line": 25
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"schema_version": 1
},
"name": "t00022_class",
"relationships": [
{
"access": "public",
"destination": "2012435893382068755",
"source": "2282061426381077447",
"type": "extension"
},
{
"access": "public",
"destination": "2012435893382068755",
"source": "158819862916671538",
"type": "extension"
}
],
"using_namespace": "clanguml::t00022"
}
```

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="238px" preserveAspectRatio="none" style="width:290px;height:238px;" version="1.1" viewBox="0 0 290 238" width="290px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="fiahehnivmfuk" width="300%" x="-1" y="-1">
<filter height="300%" id="fut50s570gl2o" 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,43 +9,43 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00022/t00022.cc#L6" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00022/t00022.cc#L6" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fiahehnivmfuk)" height="86.4141" id="C_0002012435893382068755" style="stroke: #A80036; stroke-width: 1.5;" width="168" x="58.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00022/t00022.cc#L6" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00022/t00022.cc#L6" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fut50s570gl2o)" height="86.4141" id="C_0002012435893382068755" style="stroke: #A80036; stroke-width: 1.5;" width="168" x="58.5" y="8"/>
<ellipse cx="134.25" cy="24" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M134.3594,19.3438 L133.2031,24.4219 L135.5313,24.4219 L134.3594,19.3438 Z M132.875,17.1094 L135.8594,17.1094 L139.2188,29.5 L136.7656,29.5 L136,26.4375 L132.7188,26.4375 L131.9688,29.5 L129.5313,29.5 L132.875,17.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="8" x="154.75" y="28.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="59.5" x2="225.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="59.5" x2="225.5" y1="48" y2="48"/>
<ellipse cx="69.5" cy="59" 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="142" x="78.5" y="62.2104">template_method() : void</text>
<polygon fill="#FFFF44" points="69.5,66.8047,73.5,70.8047,69.5,74.8047,65.5,70.8047" style="stroke: #B38D22; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="118" x="78.5" y="75.0151">method1() = 0 : void</text>
<polygon fill="#FFFF44" points="69.5,79.6094,73.5,83.6094,69.5,87.6094,65.5,83.6094" style="stroke: #B38D22; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="118" x="78.5" y="87.8198">method2() = 0 : void</text>
<polygon fill="#FFFF44" points="69.5,46,73.5,50,69.5,54,65.5,50" style="stroke: #B38D22; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="118" x="78.5" y="54.2104">method1() = 0 : void</text>
<polygon fill="#FFFF44" points="69.5,58.8047,73.5,62.8047,69.5,66.8047,65.5,62.8047" style="stroke: #B38D22; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="118" x="78.5" y="67.0151">method2() = 0 : void</text>
<ellipse cx="69.5" cy="76.6094" 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="142" x="78.5" y="79.8198">template_method() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="59.5" x2="225.5" y1="86.4141" y2="86.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00022/t00022.cc#L19" target="_top" title="A1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00022/t00022.cc#L19" xlink:show="new" xlink:title="A1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fiahehnivmfuk)" height="73.6094" id="C_0002282061426381077447" style="stroke: #A80036; stroke-width: 1.5;" width="119" x="6" y="154"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00022/t00022.cc#L19" target="_top" title="A1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00022/t00022.cc#L19" xlink:show="new" xlink:title="A1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fut50s570gl2o)" height="73.6094" id="C_0002282061426381077447" style="stroke: #A80036; stroke-width: 1.5;" width="119" x="6" y="154"/>
<ellipse cx="53.25" cy="170" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M56.2188,175.6406 Q55.6406,175.9375 55,176.0781 Q54.3594,176.2344 53.6563,176.2344 Q51.1563,176.2344 49.8281,174.5938 Q48.5156,172.9375 48.5156,169.8125 Q48.5156,166.6875 49.8281,165.0313 Q51.1563,163.375 53.6563,163.375 Q54.3594,163.375 55,163.5313 Q55.6563,163.6875 56.2188,163.9844 L56.2188,166.7031 Q55.5938,166.125 55,165.8594 Q54.4063,165.5781 53.7813,165.5781 Q52.4375,165.5781 51.75,166.6563 Q51.0625,167.7188 51.0625,169.8125 Q51.0625,171.9063 51.75,172.9844 Q52.4375,174.0469 53.7813,174.0469 Q54.4063,174.0469 55,173.7813 Q55.5938,173.5 56.2188,172.9219 L56.2188,175.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="16" x="73.75" y="174.1543">A1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="124" y1="186" y2="186"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="124" y1="194" y2="194"/>
<polygon fill="#FFFF44" points="17,200,21,204,17,208,13,204" style="stroke: #B38D22; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="26" y="208.2104">method1() : void</text>
<polygon fill="#FFFF44" points="17,212.8047,21,216.8047,17,220.8047,13,216.8047" style="stroke: #B38D22; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="26" y="221.0151">method2() : void</text>
<polygon fill="#FFFF44" points="17,192,21,196,17,200,13,196" style="stroke: #B38D22; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="26" y="200.2104">method1() : void</text>
<polygon fill="#FFFF44" points="17,204.8047,21,208.8047,17,212.8047,13,208.8047" style="stroke: #B38D22; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="26" y="213.0151">method2() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="124" y1="219.6094" y2="219.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00022/t00022.cc#L25" target="_top" title="A2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00022/t00022.cc#L25" xlink:show="new" xlink:title="A2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fiahehnivmfuk)" height="73.6094" id="C_0000158819862916671538" style="stroke: #A80036; stroke-width: 1.5;" width="119" x="160" y="154"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00022/t00022.cc#L25" target="_top" title="A2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00022/t00022.cc#L25" xlink:show="new" xlink:title="A2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fut50s570gl2o)" height="73.6094" id="C_0000158819862916671538" style="stroke: #A80036; stroke-width: 1.5;" width="119" x="160" y="154"/>
<ellipse cx="207.25" cy="170" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M210.2188,175.6406 Q209.6406,175.9375 209,176.0781 Q208.3594,176.2344 207.6563,176.2344 Q205.1563,176.2344 203.8281,174.5938 Q202.5156,172.9375 202.5156,169.8125 Q202.5156,166.6875 203.8281,165.0313 Q205.1563,163.375 207.6563,163.375 Q208.3594,163.375 209,163.5313 Q209.6563,163.6875 210.2188,163.9844 L210.2188,166.7031 Q209.5938,166.125 209,165.8594 Q208.4063,165.5781 207.7813,165.5781 Q206.4375,165.5781 205.75,166.6563 Q205.0625,167.7188 205.0625,169.8125 Q205.0625,171.9063 205.75,172.9844 Q206.4375,174.0469 207.7813,174.0469 Q208.4063,174.0469 209,173.7813 Q209.5938,173.5 210.2188,172.9219 L210.2188,175.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="16" x="227.75" y="174.1543">A2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="161" x2="278" y1="186" y2="186"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="161" x2="278" y1="194" y2="194"/>
<polygon fill="#FFFF44" points="171,200,175,204,171,208,167,204" style="stroke: #B38D22; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="180" y="208.2104">method1() : void</text>
<polygon fill="#FFFF44" points="171,212.8047,175,216.8047,171,220.8047,167,216.8047" style="stroke: #B38D22; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="180" y="221.0151">method2() : void</text>
<polygon fill="#FFFF44" points="171,192,175,196,171,200,167,196" style="stroke: #B38D22; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="180" y="200.2104">method1() : void</text>
<polygon fill="#FFFF44" points="171,204.8047,175,208.8047,171,212.8047,167,208.8047" style="stroke: #B38D22; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="180" y="213.0151">method2() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="161" x2="278" y1="219.6094" y2="219.6094"/>
</a>
<path d="M109.15,111.76 C101.19,126.04 92.92,140.85 85.76,153.7 " fill="none" id="C_0002012435893382068755&lt;-C_0002282061426381077447" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="103.12,108.21,118.98,94.15,115.35,115.03,103.12,108.21" style="stroke: #A80036; stroke-width: 1.0;"/>

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@@ -56,9 +56,332 @@ public:
private:
std::unique_ptr<Strategy> m_strategy;
};
}
}
} // namespace t00023
} // namespace clanguml
```
## Generated UML diagrams
![t00023_class](./t00023_class.svg "Strategy pattern")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00023::Strategy",
"id": "1469857696438841976",
"is_abstract": true,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [
{
"access": "public",
"is_const": false,
"is_consteval": false,
"is_constexpr": true,
"is_constructor": false,
"is_copy_assignment": false,
"is_defaulted": true,
"is_deleted": false,
"is_move_assignment": false,
"is_noexcept": false,
"is_operator": false,
"is_pure_virtual": false,
"is_static": false,
"is_virtual": true,
"name": "~Strategy",
"parameters": [],
"type": "void"
},
{
"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": true,
"is_static": false,
"is_virtual": true,
"name": "algorithm",
"parameters": [],
"type": "void"
}
],
"name": "Strategy",
"namespace": "clanguml::t00023",
"source_location": {
"file": "../../tests/t00023/t00023.cc",
"line": 6
},
"template_parameters": [],
"type": "class"
},
{
"bases": [
{
"access": "public",
"id": "1469857696438841976",
"is_virtual": false,
"name": "clanguml::t00023::Strategy"
}
],
"display_name": "clanguml::t00023::StrategyA",
"id": "1245533075819635385",
"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": true,
"name": "algorithm",
"parameters": [],
"type": "void"
}
],
"name": "StrategyA",
"namespace": "clanguml::t00023",
"source_location": {
"file": "../../tests/t00023/t00023.cc",
"line": 12
},
"template_parameters": [],
"type": "class"
},
{
"bases": [
{
"access": "public",
"id": "1469857696438841976",
"is_virtual": false,
"name": "clanguml::t00023::Strategy"
}
],
"display_name": "clanguml::t00023::StrategyB",
"id": "264986406899645",
"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": true,
"name": "algorithm",
"parameters": [],
"type": "void"
}
],
"name": "StrategyB",
"namespace": "clanguml::t00023",
"source_location": {
"file": "../../tests/t00023/t00023.cc",
"line": 17
},
"template_parameters": [],
"type": "class"
},
{
"bases": [
{
"access": "public",
"id": "1469857696438841976",
"is_virtual": false,
"name": "clanguml::t00023::Strategy"
}
],
"display_name": "clanguml::t00023::StrategyC",
"id": "174795176193483089",
"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": true,
"name": "algorithm",
"parameters": [],
"type": "void"
}
],
"name": "StrategyC",
"namespace": "clanguml::t00023",
"source_location": {
"file": "../../tests/t00023/t00023.cc",
"line": 22
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00023::Context",
"id": "2038594012979479050",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [
{
"access": "private",
"is_static": false,
"name": "m_strategy",
"source_location": {
"file": "../../tests/t00023/t00023.cc",
"line": 37
},
"type": "std::unique_ptr<Strategy>"
}
],
"methods": [
{
"access": "public",
"is_const": false,
"is_consteval": false,
"is_constexpr": false,
"is_constructor": true,
"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": "Context",
"parameters": [
{
"name": "strategy",
"type": "std::unique_ptr<Strategy>"
}
],
"type": "void"
},
{
"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": "apply",
"parameters": [],
"type": "void"
}
],
"name": "Context",
"namespace": "clanguml::t00023",
"source_location": {
"file": "../../tests/t00023/t00023.cc",
"line": 27
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"schema_version": 1
},
"name": "t00023_class",
"relationships": [
{
"access": "public",
"destination": "1469857696438841976",
"source": "1245533075819635385",
"type": "extension"
},
{
"access": "public",
"destination": "1469857696438841976",
"source": "264986406899645",
"type": "extension"
},
{
"access": "public",
"destination": "1469857696438841976",
"source": "174795176193483089",
"type": "extension"
},
{
"access": "public",
"destination": "1469857696438841976",
"source": "2038594012979479050",
"type": "dependency"
},
{
"access": "private",
"destination": "1469857696438841976",
"label": "m_strategy",
"source": "2038594012979479050",
"type": "aggregation"
}
],
"using_namespace": "clanguml::t00023"
}
```

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="377px" preserveAspectRatio="none" style="width:456px;height:377px;" version="1.1" viewBox="0 0 456 377" width="456px" 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="393px" preserveAspectRatio="none" style="width:456px;height:393px;" version="1.1" viewBox="0 0 456 393" width="456px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1lqq2gv2bldps" width="300%" x="-1" y="-1">
<filter height="300%" id="fa48n3tngva1q" 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,78 +9,80 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00023/t00023.cc#L6" target="_top" title="Strategy" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00023/t00023.cc#L6" xlink:show="new" xlink:title="Strategy" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1lqq2gv2bldps)" height="73.6094" id="C_0001469857696438841976" style="stroke: #A80036; stroke-width: 1.5;" width="182" x="134.5" y="171"/>
<ellipse cx="194.25" cy="187" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M194.3594,182.3438 L193.2031,187.4219 L195.5313,187.4219 L194.3594,182.3438 Z M192.875,180.1094 L195.8594,180.1094 L199.2188,192.5 L196.7656,192.5 L196,189.4375 L192.7188,189.4375 L191.9688,192.5 L189.5313,192.5 L192.875,180.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="54" x="214.75" y="191.1543">Strategy</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="135.5" x2="315.5" y1="203" y2="203"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="135.5" x2="315.5" y1="211" y2="211"/>
<ellipse cx="145.5" cy="222" 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="156" x="154.5" y="225.2104">~Strategy() = default : void</text>
<ellipse cx="145.5" cy="234.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="122" x="154.5" y="238.0151">algorithm() = 0 : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00023/t00023.cc#L6" target="_top" title="Strategy" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00023/t00023.cc#L6" xlink:show="new" xlink:title="Strategy" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fa48n3tngva1q)" height="81.6094" id="C_0001469857696438841976" style="stroke: #A80036; stroke-width: 1.5;" width="242" x="104.5" y="179"/>
<ellipse cx="194.25" cy="195" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M194.3594,190.3438 L193.2031,195.4219 L195.5313,195.4219 L194.3594,190.3438 Z M192.875,188.1094 L195.8594,188.1094 L199.2188,200.5 L196.7656,200.5 L196,197.4375 L192.7188,197.4375 L191.9688,200.5 L189.5313,200.5 L192.875,188.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="54" x="214.75" y="199.1543">Strategy</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="105.5" x2="345.5" y1="211" y2="211"/>
<ellipse cx="115.5" cy="222" 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="216" x="124.5" y="225.2104">~Strategy() constexpr = default : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="105.5" x2="345.5" y1="231.8047" y2="231.8047"/>
<ellipse cx="115.5" cy="242.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="122" x="124.5" y="246.0151">algorithm() = 0 : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="105.5" x2="345.5" y1="252.6094" y2="252.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00023/t00023.cc#L12" target="_top" title="StrategyA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00023/t00023.cc#L12" xlink:show="new" xlink:title="StrategyA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1lqq2gv2bldps)" height="60.8047" id="C_0001245533075819635385" style="stroke: #A80036; stroke-width: 1.5;" width="123" x="6" y="306"/>
<ellipse cx="34.5" cy="322" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M37.4688,327.6406 Q36.8906,327.9375 36.25,328.0781 Q35.6094,328.2344 34.9063,328.2344 Q32.4063,328.2344 31.0781,326.5938 Q29.7656,324.9375 29.7656,321.8125 Q29.7656,318.6875 31.0781,317.0313 Q32.4063,315.375 34.9063,315.375 Q35.6094,315.375 36.25,315.5313 Q36.9063,315.6875 37.4688,315.9844 L37.4688,318.7031 Q36.8438,318.125 36.25,317.8594 Q35.6563,317.5781 35.0313,317.5781 Q33.6875,317.5781 33,318.6563 Q32.3125,319.7188 32.3125,321.8125 Q32.3125,323.9063 33,324.9844 Q33.6875,326.0469 35.0313,326.0469 Q35.6563,326.0469 36.25,325.7813 Q36.8438,325.5 37.4688,324.9219 L37.4688,327.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="61" x="51.5" y="326.1543">StrategyA</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="128" y1="338" y2="338"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="128" y1="346" y2="346"/>
<ellipse cx="17" cy="357" 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="97" x="26" y="360.2104">algorithm() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00023/t00023.cc#L12" target="_top" title="StrategyA" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00023/t00023.cc#L12" xlink:show="new" xlink:title="StrategyA" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fa48n3tngva1q)" height="60.8047" id="C_0001245533075819635385" style="stroke: #A80036; stroke-width: 1.5;" width="123" x="6" y="322"/>
<ellipse cx="34.5" cy="338" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M37.4688,343.6406 Q36.8906,343.9375 36.25,344.0781 Q35.6094,344.2344 34.9063,344.2344 Q32.4063,344.2344 31.0781,342.5938 Q29.7656,340.9375 29.7656,337.8125 Q29.7656,334.6875 31.0781,333.0313 Q32.4063,331.375 34.9063,331.375 Q35.6094,331.375 36.25,331.5313 Q36.9063,331.6875 37.4688,331.9844 L37.4688,334.7031 Q36.8438,334.125 36.25,333.8594 Q35.6563,333.5781 35.0313,333.5781 Q33.6875,333.5781 33,334.6563 Q32.3125,335.7188 32.3125,337.8125 Q32.3125,339.9063 33,340.9844 Q33.6875,342.0469 35.0313,342.0469 Q35.6563,342.0469 36.25,341.7813 Q36.8438,341.5 37.4688,340.9219 L37.4688,343.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="61" x="51.5" y="342.1543">StrategyA</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="128" y1="354" y2="354"/>
<ellipse cx="17" cy="365" 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="97" x="26" y="368.2104">algorithm() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="128" y1="374.8047" y2="374.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00023/t00023.cc#L17" target="_top" title="StrategyB" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00023/t00023.cc#L17" xlink:show="new" xlink:title="StrategyB" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1lqq2gv2bldps)" height="60.8047" id="C_0000000264986406899645" style="stroke: #A80036; stroke-width: 1.5;" width="123" x="164" y="306"/>
<ellipse cx="192.5" cy="322" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M195.4688,327.6406 Q194.8906,327.9375 194.25,328.0781 Q193.6094,328.2344 192.9063,328.2344 Q190.4063,328.2344 189.0781,326.5938 Q187.7656,324.9375 187.7656,321.8125 Q187.7656,318.6875 189.0781,317.0313 Q190.4063,315.375 192.9063,315.375 Q193.6094,315.375 194.25,315.5313 Q194.9063,315.6875 195.4688,315.9844 L195.4688,318.7031 Q194.8438,318.125 194.25,317.8594 Q193.6563,317.5781 193.0313,317.5781 Q191.6875,317.5781 191,318.6563 Q190.3125,319.7188 190.3125,321.8125 Q190.3125,323.9063 191,324.9844 Q191.6875,326.0469 193.0313,326.0469 Q193.6563,326.0469 194.25,325.7813 Q194.8438,325.5 195.4688,324.9219 L195.4688,327.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="61" x="209.5" y="326.1543">StrategyB</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="165" x2="286" y1="338" y2="338"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="165" x2="286" y1="346" y2="346"/>
<ellipse cx="175" cy="357" 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="97" x="184" y="360.2104">algorithm() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00023/t00023.cc#L17" target="_top" title="StrategyB" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00023/t00023.cc#L17" xlink:show="new" xlink:title="StrategyB" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fa48n3tngva1q)" height="60.8047" id="C_0000000264986406899645" style="stroke: #A80036; stroke-width: 1.5;" width="123" x="164" y="322"/>
<ellipse cx="192.5" cy="338" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M195.4688,343.6406 Q194.8906,343.9375 194.25,344.0781 Q193.6094,344.2344 192.9063,344.2344 Q190.4063,344.2344 189.0781,342.5938 Q187.7656,340.9375 187.7656,337.8125 Q187.7656,334.6875 189.0781,333.0313 Q190.4063,331.375 192.9063,331.375 Q193.6094,331.375 194.25,331.5313 Q194.9063,331.6875 195.4688,331.9844 L195.4688,334.7031 Q194.8438,334.125 194.25,333.8594 Q193.6563,333.5781 193.0313,333.5781 Q191.6875,333.5781 191,334.6563 Q190.3125,335.7188 190.3125,337.8125 Q190.3125,339.9063 191,340.9844 Q191.6875,342.0469 193.0313,342.0469 Q193.6563,342.0469 194.25,341.7813 Q194.8438,341.5 195.4688,340.9219 L195.4688,343.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="61" x="209.5" y="342.1543">StrategyB</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="165" x2="286" y1="354" y2="354"/>
<ellipse cx="175" cy="365" 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="97" x="184" y="368.2104">algorithm() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="165" x2="286" y1="374.8047" y2="374.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00023/t00023.cc#L22" target="_top" title="StrategyC" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00023/t00023.cc#L22" xlink:show="new" xlink:title="StrategyC" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1lqq2gv2bldps)" height="60.8047" id="C_0000174795176193483089" style="stroke: #A80036; stroke-width: 1.5;" width="123" x="322" y="306"/>
<ellipse cx="350.5" cy="322" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M353.4688,327.6406 Q352.8906,327.9375 352.25,328.0781 Q351.6094,328.2344 350.9063,328.2344 Q348.4063,328.2344 347.0781,326.5938 Q345.7656,324.9375 345.7656,321.8125 Q345.7656,318.6875 347.0781,317.0313 Q348.4063,315.375 350.9063,315.375 Q351.6094,315.375 352.25,315.5313 Q352.9063,315.6875 353.4688,315.9844 L353.4688,318.7031 Q352.8438,318.125 352.25,317.8594 Q351.6563,317.5781 351.0313,317.5781 Q349.6875,317.5781 349,318.6563 Q348.3125,319.7188 348.3125,321.8125 Q348.3125,323.9063 349,324.9844 Q349.6875,326.0469 351.0313,326.0469 Q351.6563,326.0469 352.25,325.7813 Q352.8438,325.5 353.4688,324.9219 L353.4688,327.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="61" x="367.5" y="326.1543">StrategyC</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="323" x2="444" y1="338" y2="338"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="323" x2="444" y1="346" y2="346"/>
<ellipse cx="333" cy="357" 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="97" x="342" y="360.2104">algorithm() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00023/t00023.cc#L22" target="_top" title="StrategyC" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00023/t00023.cc#L22" xlink:show="new" xlink:title="StrategyC" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fa48n3tngva1q)" height="60.8047" id="C_0000174795176193483089" style="stroke: #A80036; stroke-width: 1.5;" width="123" x="322" y="322"/>
<ellipse cx="350.5" cy="338" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M353.4688,343.6406 Q352.8906,343.9375 352.25,344.0781 Q351.6094,344.2344 350.9063,344.2344 Q348.4063,344.2344 347.0781,342.5938 Q345.7656,340.9375 345.7656,337.8125 Q345.7656,334.6875 347.0781,333.0313 Q348.4063,331.375 350.9063,331.375 Q351.6094,331.375 352.25,331.5313 Q352.9063,331.6875 353.4688,331.9844 L353.4688,334.7031 Q352.8438,334.125 352.25,333.8594 Q351.6563,333.5781 351.0313,333.5781 Q349.6875,333.5781 349,334.6563 Q348.3125,335.7188 348.3125,337.8125 Q348.3125,339.9063 349,340.9844 Q349.6875,342.0469 351.0313,342.0469 Q351.6563,342.0469 352.25,341.7813 Q352.8438,341.5 353.4688,340.9219 L353.4688,343.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="61" x="367.5" y="342.1543">StrategyC</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="323" x2="444" y1="354" y2="354"/>
<ellipse cx="333" cy="365" 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="97" x="342" y="368.2104">algorithm() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="323" x2="444" y1="374.8047" y2="374.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00023/t00023.cc#L27" target="_top" title="Context" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00023/t00023.cc#L27" xlink:show="new" xlink:title="Context" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1lqq2gv2bldps)" height="86.4141" id="C_0002038594012979479050" style="stroke: #A80036; stroke-width: 1.5;" width="315" x="68" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00023/t00023.cc#L27" target="_top" title="Context" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00023/t00023.cc#L27" xlink:show="new" xlink:title="Context" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fa48n3tngva1q)" height="94.4141" id="C_0002038594012979479050" style="stroke: #A80036; stroke-width: 1.5;" width="315" x="68" y="8"/>
<ellipse cx="197.25" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M200.2188,29.6406 Q199.6406,29.9375 199,30.0781 Q198.3594,30.2344 197.6563,30.2344 Q195.1563,30.2344 193.8281,28.5938 Q192.5156,26.9375 192.5156,23.8125 Q192.5156,20.6875 193.8281,19.0313 Q195.1563,17.375 197.6563,17.375 Q198.3594,17.375 199,17.5313 Q199.6563,17.6875 200.2188,17.9844 L200.2188,20.7031 Q199.5938,20.125 199,19.8594 Q198.4063,19.5781 197.7813,19.5781 Q196.4375,19.5781 195.75,20.6563 Q195.0625,21.7188 195.0625,23.8125 Q195.0625,25.9063 195.75,26.9844 Q196.4375,28.0469 197.7813,28.0469 Q198.4063,28.0469 199,27.7813 Q199.5938,27.5 200.2188,26.9219 L200.2188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="48" x="217.75" y="28.1543">Context</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="69" x2="382" y1="40" y2="40"/>
<ellipse cx="79" cy="51" 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="289" x="88" y="54.2104">Context(std::unique_ptr&lt;Strategy&gt; strategy) : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="69" x2="382" y1="60.8047" y2="60.8047"/>
<ellipse cx="79" cy="71.8047" 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="73" x="88" y="75.0151">apply() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="69" x2="382" y1="81.6094" y2="81.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00023/t00023.cc#L37" target="_top" title="m_strategy" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00023/t00023.cc#L37" xlink:show="new" xlink:title="m_strategy" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="74" y="46"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="76" y="48"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00023/t00023.cc#L37" target="_top" title="m_strategy" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00023/t00023.cc#L37" xlink:show="new" xlink:title="m_strategy" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="74" y="87.6094"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="76" y="89.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00023/t00023.cc#L37" target="_top" title="m_strategy" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00023/t00023.cc#L37" xlink:show="new" xlink:title="m_strategy" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="228" x="88" y="54.2104">m_strategy : std::unique_ptr&lt;Strategy&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00023/t00023.cc#L37" target="_top" title="m_strategy" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00023/t00023.cc#L37" xlink:show="new" xlink:title="m_strategy" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="228" x="88" y="95.8198">m_strategy : std::unique_ptr&lt;Strategy&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="69" x2="382" y1="60.8047" y2="60.8047"/>
<ellipse cx="79" cy="71.8047" 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="289" x="88" y="75.0151">Context(std::unique_ptr&lt;Strategy&gt; strategy) : void</text>
<ellipse cx="79" cy="84.6094" 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="73" x="88" y="87.8198">apply() : void</text>
<path d="M164.47,257.86 C144.26,274.05 122.38,291.56 104.53,305.85 " fill="none" id="C_0001469857696438841976&lt;-C_0001245533075819635385" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="160.24,252.29,180.22,245.25,168.99,263.21,160.24,252.29" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M225.5,265.55 C225.5,279.38 225.5,293.64 225.5,305.64 " fill="none" id="C_0001469857696438841976&lt;-C_0000000264986406899645" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="218.5,265.25,225.5,245.25,232.5,265.25,218.5,265.25" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M286.53,257.86 C306.74,274.05 328.62,291.56 346.47,305.85 " fill="none" id="C_0001469857696438841976&lt;-C_0000174795176193483089" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="282.01,263.21,270.78,245.25,290.76,252.29,282.01,263.21" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M219.92,94.08 C218.55,108.9 217.69,125.68 218.5,141 C218.92,149 219.63,157.53 220.44,165.71 " fill="none" id="C_0002038594012979479050-&gt;C_0001469857696438841976" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="220.96,170.74,224.0127,161.3762,220.4455,165.7665,216.0551,162.1994,220.96,170.74" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M225.5,107.43 C225.5,128.49 225.5,151.91 225.5,170.75 " fill="none" id="C_0002038594012979479050&lt;-C_0001469857696438841976" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="225.5,94.35,221.5,100.35,225.5,106.35,229.5,100.35,225.5,94.35" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="228.5" y="130.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="73" x="238.5" y="137.0669">m_strategy</text>
<path d="M161.3,274.03 C141.49,290.39 120.4,307.81 103.24,321.98 " fill="none" id="C_0001469857696438841976&lt;-C_0001245533075819635385" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="156.93,268.56,176.81,261.22,165.84,279.35,156.93,268.56" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M225.5,281.37 C225.5,295.49 225.5,309.91 225.5,321.98 " fill="none" id="C_0001469857696438841976&lt;-C_0000000264986406899645" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="218.5,281.22,225.5,261.22,232.5,281.22,218.5,281.22" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M289.7,274.03 C309.51,290.39 330.6,307.81 347.76,321.98 " fill="none" id="C_0001469857696438841976&lt;-C_0000174795176193483089" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="285.16,279.35,274.19,261.22,294.07,268.56,285.16,279.35" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M219.73,102.33 C218.48,117.22 217.74,133.8 218.5,149 C218.9,156.98 219.55,165.45 220.3,173.65 " fill="none" id="C_0002038594012979479050-&gt;C_0001469857696438841976" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="220.78,178.7,223.915,169.3634,220.3093,173.7222,215.9505,170.1165,220.78,178.7" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M225.5,115.44 C225.5,136.58 225.5,159.86 225.5,178.98 " fill="none" id="C_0002038594012979479050&lt;-C_0001469857696438841976" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="225.5,102.27,221.5,108.27,225.5,114.27,229.5,108.27,225.5,102.27" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="228.5" y="138.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="73" x="238.5" y="145.0669">m_strategy</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -55,9 +55,368 @@ public:
private:
std::shared_ptr<Target> m_target;
};
}
}
} // namespace t00024
} // namespace clanguml
```
## Generated UML diagrams
![t00024_class](./t00024_class.svg "Proxy pattern")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00024::Target",
"id": "1116408959993110019",
"is_abstract": true,
"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": true,
"is_static": false,
"is_virtual": true,
"name": "~Target",
"parameters": [],
"type": "void"
},
{
"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": true,
"is_static": false,
"is_virtual": true,
"name": "m1",
"parameters": [],
"type": "void"
},
{
"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": true,
"is_static": false,
"is_virtual": true,
"name": "m2",
"parameters": [],
"type": "void"
}
],
"name": "Target",
"namespace": "clanguml::t00024",
"source_location": {
"file": "../../tests/t00024/t00024.cc",
"line": 6
},
"template_parameters": [],
"type": "class"
},
{
"bases": [
{
"access": "public",
"id": "1116408959993110019",
"is_virtual": false,
"name": "clanguml::t00024::Target"
}
],
"display_name": "clanguml::t00024::Target1",
"id": "669517069151826610",
"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": true,
"name": "m1",
"parameters": [],
"type": "void"
},
{
"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": true,
"name": "m2",
"parameters": [],
"type": "void"
}
],
"name": "Target1",
"namespace": "clanguml::t00024",
"source_location": {
"file": "../../tests/t00024/t00024.cc",
"line": 14
},
"template_parameters": [],
"type": "class"
},
{
"bases": [
{
"access": "public",
"id": "1116408959993110019",
"is_virtual": false,
"name": "clanguml::t00024::Target"
}
],
"display_name": "clanguml::t00024::Target2",
"id": "1210513233906695933",
"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": true,
"name": "m1",
"parameters": [],
"type": "void"
},
{
"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": true,
"name": "m2",
"parameters": [],
"type": "void"
}
],
"name": "Target2",
"namespace": "clanguml::t00024",
"source_location": {
"file": "../../tests/t00024/t00024.cc",
"line": 20
},
"template_parameters": [],
"type": "class"
},
{
"bases": [
{
"access": "public",
"id": "1116408959993110019",
"is_virtual": false,
"name": "clanguml::t00024::Target"
}
],
"display_name": "clanguml::t00024::Proxy",
"id": "594707401639991215",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [
{
"access": "private",
"is_static": false,
"name": "m_target",
"source_location": {
"file": "../../tests/t00024/t00024.cc",
"line": 36
},
"type": "std::shared_ptr<Target>"
}
],
"methods": [
{
"access": "public",
"is_const": false,
"is_consteval": false,
"is_constexpr": false,
"is_constructor": true,
"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": "Proxy",
"parameters": [
{
"name": "target",
"type": "std::shared_ptr<Target>"
}
],
"type": "void"
},
{
"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": true,
"name": "m1",
"parameters": [],
"type": "void"
},
{
"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": true,
"name": "m2",
"parameters": [],
"type": "void"
}
],
"name": "Proxy",
"namespace": "clanguml::t00024",
"source_location": {
"file": "../../tests/t00024/t00024.cc",
"line": 26
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"schema_version": 1
},
"name": "t00024_class",
"relationships": [
{
"access": "public",
"destination": "1116408959993110019",
"source": "669517069151826610",
"type": "extension"
},
{
"access": "public",
"destination": "1116408959993110019",
"source": "1210513233906695933",
"type": "extension"
},
{
"access": "public",
"destination": "1116408959993110019",
"source": "594707401639991215",
"type": "dependency"
},
{
"access": "private",
"destination": "1116408959993110019",
"label": "m_target",
"source": "594707401639991215",
"type": "association"
},
{
"access": "public",
"destination": "1116408959993110019",
"source": "594707401639991215",
"type": "extension"
}
],
"using_namespace": "clanguml::t00024"
}
```

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="281px" preserveAspectRatio="none" style="width:542px;height:281px;" version="1.1" viewBox="0 0 542 281" width="542px" 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="297px" preserveAspectRatio="none" style="width:542px;height:297px;" version="1.1" viewBox="0 0 542 297" width="542px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1xm0ds9z75n1f" width="300%" x="-1" y="-1">
<filter height="300%" id="f1aavcx1sgtxlq" 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,76 +9,78 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00024/t00024.cc#L6" target="_top" title="Target" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00024/t00024.cc#L6" xlink:show="new" xlink:title="Target" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xm0ds9z75n1f)" height="86.4141" id="C_0001116408959993110019" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="245.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00024/t00024.cc#L6" target="_top" title="Target" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00024/t00024.cc#L6" xlink:show="new" xlink:title="Target" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1aavcx1sgtxlq)" height="94.4141" id="C_0001116408959993110019" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="245.5" y="8"/>
<ellipse cx="290.75" cy="24" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M290.8594,19.3438 L289.7031,24.4219 L292.0313,24.4219 L290.8594,19.3438 Z M289.375,17.1094 L292.3594,17.1094 L295.7188,29.5 L293.2656,29.5 L292.5,26.4375 L289.2188,26.4375 L288.4688,29.5 L286.0313,29.5 L289.375,17.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="41" x="311.25" y="28.1543">Target</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="246.5" x2="384.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="246.5" x2="384.5" y1="48" y2="48"/>
<ellipse cx="256.5" cy="59" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="114" x="265.5" y="62.2104">~Target() = 0 : void</text>
<ellipse cx="256.5" cy="51" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="114" x="265.5" y="54.2104">~Target() = 0 : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="246.5" x2="384.5" y1="60.8047" y2="60.8047"/>
<ellipse cx="256.5" cy="71.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="86" x="265.5" y="75.0151">m1() = 0 : void</text>
<ellipse cx="256.5" cy="84.6094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="86" x="265.5" y="87.8198">m2() = 0 : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="246.5" x2="384.5" y1="94.4141" y2="94.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00024/t00024.cc#L14" target="_top" title="Target1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00024/t00024.cc#L14" xlink:show="new" xlink:title="Target1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xm0ds9z75n1f)" height="73.6094" id="C_0000669517069151826610" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="6" y="183.5"/>
<ellipse cx="23.7" cy="199.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M26.6688,205.1406 Q26.0906,205.4375 25.45,205.5781 Q24.8094,205.7344 24.1063,205.7344 Q21.6063,205.7344 20.2781,204.0938 Q18.9656,202.4375 18.9656,199.3125 Q18.9656,196.1875 20.2781,194.5313 Q21.6063,192.875 24.1063,192.875 Q24.8094,192.875 25.45,193.0313 Q26.1063,193.1875 26.6688,193.4844 L26.6688,196.2031 Q26.0438,195.625 25.45,195.3594 Q24.8563,195.0781 24.2313,195.0781 Q22.8875,195.0781 22.2,196.1563 Q21.5125,197.2188 21.5125,199.3125 Q21.5125,201.4063 22.2,202.4844 Q22.8875,203.5469 24.2313,203.5469 Q24.8563,203.5469 25.45,203.2813 Q26.0438,203 26.6688,202.4219 L26.6688,205.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="38.3" y="203.6543">Target1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="92" y1="215.5" y2="215.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="92" y1="223.5" y2="223.5"/>
<ellipse cx="17" cy="234.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="61" x="26" y="237.7104">m1() : void</text>
<ellipse cx="17" cy="247.3047" 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="61" x="26" y="250.5151">m2() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00024/t00024.cc#L14" target="_top" title="Target1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00024/t00024.cc#L14" xlink:show="new" xlink:title="Target1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1aavcx1sgtxlq)" height="73.6094" id="C_0000669517069151826610" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="6" y="195.5"/>
<ellipse cx="23.7" cy="211.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M26.6688,217.1406 Q26.0906,217.4375 25.45,217.5781 Q24.8094,217.7344 24.1063,217.7344 Q21.6063,217.7344 20.2781,216.0938 Q18.9656,214.4375 18.9656,211.3125 Q18.9656,208.1875 20.2781,206.5313 Q21.6063,204.875 24.1063,204.875 Q24.8094,204.875 25.45,205.0313 Q26.1063,205.1875 26.6688,205.4844 L26.6688,208.2031 Q26.0438,207.625 25.45,207.3594 Q24.8563,207.0781 24.2313,207.0781 Q22.8875,207.0781 22.2,208.1563 Q21.5125,209.2188 21.5125,211.3125 Q21.5125,213.4063 22.2,214.4844 Q22.8875,215.5469 24.2313,215.5469 Q24.8563,215.5469 25.45,215.2813 Q26.0438,215 26.6688,214.4219 L26.6688,217.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="38.3" y="215.6543">Target1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="92" y1="227.5" y2="227.5"/>
<ellipse cx="17" cy="238.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="61" x="26" y="241.7104">m1() : void</text>
<ellipse cx="17" cy="251.3047" 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="61" x="26" y="254.5151">m2() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="92" y1="261.1094" y2="261.1094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00024/t00024.cc#L20" target="_top" title="Target2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00024/t00024.cc#L20" xlink:show="new" xlink:title="Target2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xm0ds9z75n1f)" height="73.6094" id="C_0001210513233906695933" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="128" y="183.5"/>
<ellipse cx="145.7" cy="199.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M148.6688,205.1406 Q148.0906,205.4375 147.45,205.5781 Q146.8094,205.7344 146.1063,205.7344 Q143.6063,205.7344 142.2781,204.0938 Q140.9656,202.4375 140.9656,199.3125 Q140.9656,196.1875 142.2781,194.5313 Q143.6063,192.875 146.1063,192.875 Q146.8094,192.875 147.45,193.0313 Q148.1063,193.1875 148.6688,193.4844 L148.6688,196.2031 Q148.0438,195.625 147.45,195.3594 Q146.8563,195.0781 146.2313,195.0781 Q144.8875,195.0781 144.2,196.1563 Q143.5125,197.2188 143.5125,199.3125 Q143.5125,201.4063 144.2,202.4844 Q144.8875,203.5469 146.2313,203.5469 Q146.8563,203.5469 147.45,203.2813 Q148.0438,203 148.6688,202.4219 L148.6688,205.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="160.3" y="203.6543">Target2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="129" x2="214" y1="215.5" y2="215.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="129" x2="214" y1="223.5" y2="223.5"/>
<ellipse cx="139" cy="234.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="61" x="148" y="237.7104">m1() : void</text>
<ellipse cx="139" cy="247.3047" 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="61" x="148" y="250.5151">m2() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00024/t00024.cc#L20" target="_top" title="Target2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00024/t00024.cc#L20" xlink:show="new" xlink:title="Target2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1aavcx1sgtxlq)" height="73.6094" id="C_0001210513233906695933" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="128" y="195.5"/>
<ellipse cx="145.7" cy="211.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M148.6688,217.1406 Q148.0906,217.4375 147.45,217.5781 Q146.8094,217.7344 146.1063,217.7344 Q143.6063,217.7344 142.2781,216.0938 Q140.9656,214.4375 140.9656,211.3125 Q140.9656,208.1875 142.2781,206.5313 Q143.6063,204.875 146.1063,204.875 Q146.8094,204.875 147.45,205.0313 Q148.1063,205.1875 148.6688,205.4844 L148.6688,208.2031 Q148.0438,207.625 147.45,207.3594 Q146.8563,207.0781 146.2313,207.0781 Q144.8875,207.0781 144.2,208.1563 Q143.5125,209.2188 143.5125,211.3125 Q143.5125,213.4063 144.2,214.4844 Q144.8875,215.5469 146.2313,215.5469 Q146.8563,215.5469 147.45,215.2813 Q148.0438,215 148.6688,214.4219 L148.6688,217.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="160.3" y="215.6543">Target2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="129" x2="214" y1="227.5" y2="227.5"/>
<ellipse cx="139" cy="238.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="61" x="148" y="241.7104">m1() : void</text>
<ellipse cx="139" cy="251.3047" 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="61" x="148" y="254.5151">m2() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="129" x2="214" y1="261.1094" y2="261.1094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00024/t00024.cc#L26" target="_top" title="Proxy" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00024/t00024.cc#L26" xlink:show="new" xlink:title="Proxy" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xm0ds9z75n1f)" height="99.2188" id="C_0000594707401639991215" style="stroke: #A80036; stroke-width: 1.5;" width="281" x="250" y="171"/>
<ellipse cx="369.75" cy="187" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M372.7188,192.6406 Q372.1406,192.9375 371.5,193.0781 Q370.8594,193.2344 370.1563,193.2344 Q367.6563,193.2344 366.3281,191.5938 Q365.0156,189.9375 365.0156,186.8125 Q365.0156,183.6875 366.3281,182.0313 Q367.6563,180.375 370.1563,180.375 Q370.8594,180.375 371.5,180.5313 Q372.1563,180.6875 372.7188,180.9844 L372.7188,183.7031 Q372.0938,183.125 371.5,182.8594 Q370.9063,182.5781 370.2813,182.5781 Q368.9375,182.5781 368.25,183.6563 Q367.5625,184.7188 367.5625,186.8125 Q367.5625,188.9063 368.25,189.9844 Q368.9375,191.0469 370.2813,191.0469 Q370.9063,191.0469 371.5,190.7813 Q372.0938,190.5 372.7188,189.9219 L372.7188,192.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="390.25" y="191.1543">Proxy</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="251" x2="530" y1="203" y2="203"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00024/t00024.cc#L26" target="_top" title="Proxy" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00024/t00024.cc#L26" xlink:show="new" xlink:title="Proxy" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1aavcx1sgtxlq)" height="107.2188" id="C_0000594707401639991215" style="stroke: #A80036; stroke-width: 1.5;" width="281" x="250" y="179"/>
<ellipse cx="369.75" cy="195" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M372.7188,200.6406 Q372.1406,200.9375 371.5,201.0781 Q370.8594,201.2344 370.1563,201.2344 Q367.6563,201.2344 366.3281,199.5938 Q365.0156,197.9375 365.0156,194.8125 Q365.0156,191.6875 366.3281,190.0313 Q367.6563,188.375 370.1563,188.375 Q370.8594,188.375 371.5,188.5313 Q372.1563,188.6875 372.7188,188.9844 L372.7188,191.7031 Q372.0938,191.125 371.5,190.8594 Q370.9063,190.5781 370.2813,190.5781 Q368.9375,190.5781 368.25,191.6563 Q367.5625,192.7188 367.5625,194.8125 Q367.5625,196.9063 368.25,197.9844 Q368.9375,199.0469 370.2813,199.0469 Q370.9063,199.0469 371.5,198.7813 Q372.0938,198.5 372.7188,197.9219 L372.7188,200.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="390.25" y="199.1543">Proxy</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="251" x2="530" y1="211" y2="211"/>
<ellipse cx="261" cy="222" 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="255" x="270" y="225.2104">Proxy(std::shared_ptr&lt;Target&gt; target) : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="251" x2="530" y1="231.8047" y2="231.8047"/>
<ellipse cx="261" cy="242.8047" 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="61" x="270" y="246.0151">m1() : void</text>
<ellipse cx="261" cy="255.6094" 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="61" x="270" y="258.8198">m2() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="251" x2="530" y1="265.4141" y2="265.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00024/t00024.cc#L36" target="_top" title="m_target" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00024/t00024.cc#L36" xlink:show="new" xlink:title="m_target" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="256" y="209"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="258" y="211"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00024/t00024.cc#L36" target="_top" title="m_target" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00024/t00024.cc#L36" xlink:show="new" xlink:title="m_target" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="256" y="271.4141"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="258" y="273.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00024/t00024.cc#L36" target="_top" title="m_target" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00024/t00024.cc#L36" xlink:show="new" xlink:title="m_target" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="206" x="270" y="217.2104">m_target : std::shared_ptr&lt;Target&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00024/t00024.cc#L36" target="_top" title="m_target" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00024/t00024.cc#L36" xlink:show="new" xlink:title="m_target" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="206" x="270" y="279.6245">m_target : std::shared_ptr&lt;Target&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="251" x2="530" y1="223.8047" y2="223.8047"/>
<ellipse cx="261" cy="234.8047" 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="255" x="270" y="238.0151">Proxy(std::shared_ptr&lt;Target&gt; target) : void</text>
<ellipse cx="261" cy="247.6094" 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="61" x="270" y="250.8198">m1() : void</text>
<ellipse cx="261" cy="260.4141" 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="61" x="270" y="263.6245">m2() : void</text>
<path d="M227.57,99.31 C190.66,120.12 147.74,145.58 110.5,171 C104.8,174.89 98.95,179.15 93.24,183.49 " fill="none" id="C_0001116408959993110019&lt;-C_0000669517069151826610" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="224.28,93.13,245.16,89.49,231.11,105.36,224.28,93.13" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M265.83,109.78 C244.79,134.25 220.92,162.02 202.46,183.49 " fill="none" id="C_0001116408959993110019&lt;-C_0001210513233906695933" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="260.82,104.87,279.16,94.27,271.43,114,260.82,104.87" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M385.71,170.98 C381.56,161.08 376.86,150.71 372.5,141 C366.36,127.31 359.78,112.39 353.05,98.74 " fill="none" id="C_0000594707401639991215-&gt;C_0001116408959993110019" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="350.76,94.17,351.1946,104.0093,352.9903,98.645,358.3546,100.4407,350.76,94.17" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M371.37,170.61 C365.25,155.56 358.3,139.01 351.5,124 C347.75,115.73 343.59,107.02 339.46,98.63 " fill="none" id="C_0000594707401639991215-&gt;C_0001116408959993110019-1" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="337.17,94,337.5669,103.8409,339.3832,98.4835,344.7405,100.2997,337.17,94" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="360.5" y="130.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="59" x="370.5" y="137.0669">m_target</text>
<path d="M325.26,112.97 C329.19,122.37 333.44,131.95 337.5,141 C341.86,150.71 346.56,161.08 351.46,170.98 " fill="none" id="C_0001116408959993110019&lt;-C_0000594707401639991215" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="318.67,115.34,317.79,94.17,331.68,110.17,318.67,115.34" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M227.89,104.16 C190.76,125.68 147.59,152.21 110.5,179 C103.48,184.07 96.28,189.77 89.4,195.49 " fill="none" id="C_0001116408959993110019&lt;-C_0000669517069151826610" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="224.47,98.05,245.3,94.17,231.43,110.19,224.47,98.05" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M264.83,117.75 C243.52,143.72 219.48,173.02 201.13,195.39 " fill="none" id="C_0001116408959993110019&lt;-C_0001210513233906695933" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="259.57,113.13,277.67,102.11,270.39,122.01,259.57,113.13" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M385.02,178.74 C381.05,168.86 376.62,158.63 372.5,149 C366.68,135.41 360.46,120.66 354.09,107 " fill="none" id="C_0000594707401639991215-&gt;C_0001116408959993110019" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="351.92,102.41,352.1284,112.2567,354.0469,106.9351,359.3685,108.8536,351.92,102.41" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M370.63,178.81 C364.69,163.62 358.01,147.07 351.5,132 C347.98,123.86 344.11,115.3 340.24,106.98 " fill="none" id="C_0000594707401639991215-&gt;C_0001116408959993110019-1" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="338.1,102.39,338.2829,112.2372,340.2152,106.9206,345.5318,108.8528,338.1,102.39" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="360.5" y="138.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="59" x="370.5" y="145.0669">m_target</text>
<path d="M325.87,121.19 C329.63,130.53 333.66,140.02 337.5,149 C341.62,158.63 346.05,168.86 350.65,178.74 " fill="none" id="C_0001116408959993110019&lt;-C_0000594707401639991215" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="319.3,123.59,318.65,102.41,332.37,118.57,319.3,123.59" style="stroke: #A80036; stroke-width: 1.0;"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -53,9 +53,378 @@ public:
Proxy<Target1> proxy1;
Proxy<Target2> proxy2;
};
}
}
} // namespace t00025
} // namespace clanguml
```
## Generated UML diagrams
![t00025_class](./t00025_class.svg "Template proxy pattern")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00025::Target1",
"id": "1573849034571194138",
"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": "m1",
"parameters": [],
"type": "void"
},
{
"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": "m2",
"parameters": [],
"type": "void"
}
],
"name": "Target1",
"namespace": "clanguml::t00025",
"source_location": {
"file": "../../tests/t00025/t00025.cc",
"line": 6
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00025::Target2",
"id": "751896409461834669",
"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": "m1",
"parameters": [],
"type": "void"
},
{
"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": "m2",
"parameters": [],
"type": "void"
}
],
"name": "Target2",
"namespace": "clanguml::t00025",
"source_location": {
"file": "../../tests/t00025/t00025.cc",
"line": 12
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00025::Proxy<T>",
"id": "1483353300536405088",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [
{
"access": "private",
"is_static": false,
"name": "m_target",
"source_location": {
"file": "../../tests/t00025/t00025.cc",
"line": 28
},
"type": "std::shared_ptr<T>"
}
],
"methods": [
{
"access": "public",
"is_const": false,
"is_consteval": false,
"is_constexpr": false,
"is_constructor": true,
"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": "Proxy",
"parameters": [
{
"name": "target",
"type": "std::shared_ptr<T>"
}
],
"type": "void"
},
{
"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": "m1",
"parameters": [],
"type": "void"
},
{
"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": "m2",
"parameters": [],
"type": "void"
}
],
"name": "Proxy",
"namespace": "clanguml::t00025",
"source_location": {
"file": "../../tests/t00025/t00025.cc",
"line": 18
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00025::Proxy<clanguml::t00025::Target1>",
"id": "1644966842838139424",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "Proxy",
"namespace": "clanguml::t00025",
"source_location": {
"file": "../../tests/t00025/t00025.cc",
"line": 18
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "clanguml::t00025::Target1"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00025::Proxy<clanguml::t00025::Target2>",
"id": "1190103100236298763",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "Proxy",
"namespace": "clanguml::t00025",
"source_location": {
"file": "../../tests/t00025/t00025.cc",
"line": 18
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "clanguml::t00025::Target2"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00025::ProxyHolder",
"id": "1906317303950647748",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "proxy1",
"source_location": {
"file": "../../tests/t00025/t00025.cc",
"line": 33
},
"type": "Proxy<clanguml::t00025::Target1>"
},
{
"access": "public",
"is_static": false,
"name": "proxy2",
"source_location": {
"file": "../../tests/t00025/t00025.cc",
"line": 34
},
"type": "Proxy<clanguml::t00025::Target2>"
}
],
"methods": [],
"name": "ProxyHolder",
"namespace": "clanguml::t00025",
"source_location": {
"file": "../../tests/t00025/t00025.cc",
"line": 31
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"schema_version": 1
},
"name": "t00025_class",
"relationships": [
{
"access": "public",
"destination": "1573849034571194138",
"source": "1644966842838139424",
"type": "dependency"
},
{
"access": "public",
"destination": "1483353300536405088",
"source": "1644966842838139424",
"type": "instantiation"
},
{
"access": "public",
"destination": "751896409461834669",
"source": "1190103100236298763",
"type": "dependency"
},
{
"access": "public",
"destination": "1483353300536405088",
"source": "1190103100236298763",
"type": "instantiation"
},
{
"access": "public",
"destination": "1644966842838139424",
"label": "proxy1",
"source": "1906317303950647748",
"type": "aggregation"
},
{
"access": "public",
"destination": "1190103100236298763",
"label": "proxy2",
"source": "1906317303950647748",
"type": "aggregation"
}
],
"using_namespace": "clanguml::t00025"
}
```

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="378px" preserveAspectRatio="none" style="width:538px;height:378px;" version="1.1" viewBox="0 0 538 378" width="538px" 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="386px" preserveAspectRatio="none" style="width:512px;height:386px;" version="1.1" viewBox="0 0 512 386" width="512px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1tn9hwvvvs6v2" width="300%" x="-1" y="-1">
<filter height="300%" id="fzt378t4oekzw" 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,106 +9,111 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L6" target="_top" title="Target1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L6" xlink:show="new" xlink:title="Target1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tn9hwvvvs6v2)" height="73.6094" id="C_0001573849034571194138" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="6" y="280.5"/>
<ellipse cx="23.7" cy="296.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M26.6688,302.1406 Q26.0906,302.4375 25.45,302.5781 Q24.8094,302.7344 24.1063,302.7344 Q21.6063,302.7344 20.2781,301.0938 Q18.9656,299.4375 18.9656,296.3125 Q18.9656,293.1875 20.2781,291.5313 Q21.6063,289.875 24.1063,289.875 Q24.8094,289.875 25.45,290.0313 Q26.1063,290.1875 26.6688,290.4844 L26.6688,293.2031 Q26.0438,292.625 25.45,292.3594 Q24.8563,292.0781 24.2313,292.0781 Q22.8875,292.0781 22.2,293.1563 Q21.5125,294.2188 21.5125,296.3125 Q21.5125,298.4063 22.2,299.4844 Q22.8875,300.5469 24.2313,300.5469 Q24.8563,300.5469 25.45,300.2813 Q26.0438,300 26.6688,299.4219 L26.6688,302.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="38.3" y="300.6543">Target1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="92" y1="312.5" y2="312.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="92" y1="320.5" y2="320.5"/>
<ellipse cx="17" cy="331.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="61" x="26" y="334.7104">m1() : void</text>
<ellipse cx="17" cy="344.3047" 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="61" x="26" y="347.5151">m2() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L6" target="_top" title="Target1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L6" xlink:show="new" xlink:title="Target1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzt378t4oekzw)" height="73.6094" id="C_0001573849034571194138" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="6" y="284.5"/>
<ellipse cx="23.7" cy="300.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M26.6688,306.1406 Q26.0906,306.4375 25.45,306.5781 Q24.8094,306.7344 24.1063,306.7344 Q21.6063,306.7344 20.2781,305.0938 Q18.9656,303.4375 18.9656,300.3125 Q18.9656,297.1875 20.2781,295.5313 Q21.6063,293.875 24.1063,293.875 Q24.8094,293.875 25.45,294.0313 Q26.1063,294.1875 26.6688,294.4844 L26.6688,297.2031 Q26.0438,296.625 25.45,296.3594 Q24.8563,296.0781 24.2313,296.0781 Q22.8875,296.0781 22.2,297.1563 Q21.5125,298.2188 21.5125,300.3125 Q21.5125,302.4063 22.2,303.4844 Q22.8875,304.5469 24.2313,304.5469 Q24.8563,304.5469 25.45,304.2813 Q26.0438,304 26.6688,303.4219 L26.6688,306.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="38.3" y="304.6543">Target1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="92" y1="316.5" y2="316.5"/>
<ellipse cx="17" cy="327.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="61" x="26" y="330.7104">m1() : void</text>
<ellipse cx="17" cy="340.3047" 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="61" x="26" y="343.5151">m2() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="92" y1="350.1094" y2="350.1094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L12" target="_top" title="Target2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L12" xlink:show="new" xlink:title="Target2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tn9hwvvvs6v2)" height="73.6094" id="C_0000751896409461834669" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="440" y="280.5"/>
<ellipse cx="457.7" cy="296.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M460.6688,302.1406 Q460.0906,302.4375 459.45,302.5781 Q458.8094,302.7344 458.1063,302.7344 Q455.6063,302.7344 454.2781,301.0938 Q452.9656,299.4375 452.9656,296.3125 Q452.9656,293.1875 454.2781,291.5313 Q455.6063,289.875 458.1063,289.875 Q458.8094,289.875 459.45,290.0313 Q460.1063,290.1875 460.6688,290.4844 L460.6688,293.2031 Q460.0438,292.625 459.45,292.3594 Q458.8563,292.0781 458.2313,292.0781 Q456.8875,292.0781 456.2,293.1563 Q455.5125,294.2188 455.5125,296.3125 Q455.5125,298.4063 456.2,299.4844 Q456.8875,300.5469 458.2313,300.5469 Q458.8563,300.5469 459.45,300.2813 Q460.0438,300 460.6688,299.4219 L460.6688,302.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="472.3" y="300.6543">Target2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="441" x2="526" y1="312.5" y2="312.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="441" x2="526" y1="320.5" y2="320.5"/>
<ellipse cx="451" cy="331.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="61" x="460" y="334.7104">m1() : void</text>
<ellipse cx="451" cy="344.3047" 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="61" x="460" y="347.5151">m2() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L12" target="_top" title="Target2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L12" xlink:show="new" xlink:title="Target2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzt378t4oekzw)" height="73.6094" id="C_0000751896409461834669" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="414" y="284.5"/>
<ellipse cx="431.7" cy="300.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M434.6688,306.1406 Q434.0906,306.4375 433.45,306.5781 Q432.8094,306.7344 432.1063,306.7344 Q429.6063,306.7344 428.2781,305.0938 Q426.9656,303.4375 426.9656,300.3125 Q426.9656,297.1875 428.2781,295.5313 Q429.6063,293.875 432.1063,293.875 Q432.8094,293.875 433.45,294.0313 Q434.1063,294.1875 434.6688,294.4844 L434.6688,297.2031 Q434.0438,296.625 433.45,296.3594 Q432.8563,296.0781 432.2313,296.0781 Q430.8875,296.0781 430.2,297.1563 Q429.5125,298.2188 429.5125,300.3125 Q429.5125,302.4063 430.2,303.4844 Q430.8875,304.5469 432.2313,304.5469 Q432.8563,304.5469 433.45,304.2813 Q434.0438,304 434.6688,303.4219 L434.6688,306.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="446.3" y="304.6543">Target2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="415" x2="500" y1="316.5" y2="316.5"/>
<ellipse cx="425" cy="327.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="61" x="434" y="330.7104">m1() : void</text>
<ellipse cx="425" cy="340.3047" 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="61" x="434" y="343.5151">m2() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="415" x2="500" y1="350.1094" y2="350.1094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L18" target="_top" title="Proxy" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L18" xlink:show="new" xlink:title="Proxy" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tn9hwvvvs6v2)" height="99.2188" id="C_0001483353300536405088" style="stroke: #A80036; stroke-width: 1.5;" width="276" x="128.5" y="268"/>
<ellipse cx="240.25" cy="284" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M243.2188,289.6406 Q242.6406,289.9375 242,290.0781 Q241.3594,290.2344 240.6563,290.2344 Q238.1563,290.2344 236.8281,288.5938 Q235.5156,286.9375 235.5156,283.8125 Q235.5156,280.6875 236.8281,279.0313 Q238.1563,277.375 240.6563,277.375 Q241.3594,277.375 242,277.5313 Q242.6563,277.6875 243.2188,277.9844 L243.2188,280.7031 Q242.5938,280.125 242,279.8594 Q241.4063,279.5781 240.7813,279.5781 Q239.4375,279.5781 238.75,280.6563 Q238.0625,281.7188 238.0625,283.8125 Q238.0625,285.9063 238.75,286.9844 Q239.4375,288.0469 240.7813,288.0469 Q241.4063,288.0469 242,287.7813 Q242.5938,287.5 243.2188,286.9219 L243.2188,289.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="260.75" y="288.1543">Proxy</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="398.5" y="265"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="399.5" y="277.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="129.5" x2="403.5" y1="300" y2="300"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L18" target="_top" title="Proxy" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L18" xlink:show="new" xlink:title="Proxy" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzt378t4oekzw)" height="107.2188" id="C_0001483353300536405088" style="stroke: #A80036; stroke-width: 1.5;" width="251" x="128" y="268"/>
<ellipse cx="227.25" cy="284" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M230.2188,289.6406 Q229.6406,289.9375 229,290.0781 Q228.3594,290.2344 227.6563,290.2344 Q225.1563,290.2344 223.8281,288.5938 Q222.5156,286.9375 222.5156,283.8125 Q222.5156,280.6875 223.8281,279.0313 Q225.1563,277.375 227.6563,277.375 Q228.3594,277.375 229,277.5313 Q229.6563,277.6875 230.2188,277.9844 L230.2188,280.7031 Q229.5938,280.125 229,279.8594 Q228.4063,279.5781 227.7813,279.5781 Q226.4375,279.5781 225.75,280.6563 Q225.0625,281.7188 225.0625,283.8125 Q225.0625,285.9063 225.75,286.9844 Q226.4375,288.0469 227.7813,288.0469 Q228.4063,288.0469 229,287.7813 Q229.5938,287.5 230.2188,286.9219 L230.2188,289.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="247.75" y="288.1543">Proxy</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="373" y="265"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="374" y="277.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="129" x2="378" y1="300" y2="300"/>
<ellipse cx="139" cy="311" 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="225" x="148" y="314.2104">Proxy(std::shared_ptr&lt;T&gt; target) : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="129" x2="378" y1="320.8047" y2="320.8047"/>
<ellipse cx="139" cy="331.8047" 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="61" x="148" y="335.0151">m1() : void</text>
<ellipse cx="139" cy="344.6094" 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="61" x="148" y="347.8198">m2() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="129" x2="378" y1="354.4141" y2="354.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L28" target="_top" title="m_target" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L28" xlink:show="new" xlink:title="m_target" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="134.5" y="306"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="136.5" y="308"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L28" target="_top" title="m_target" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L28" xlink:show="new" xlink:title="m_target" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="134" y="360.4141"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="136" y="362.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L28" target="_top" title="m_target" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L28" xlink:show="new" xlink:title="m_target" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="176" x="148.5" y="314.2104">m_target : std::shared_ptr&lt;T&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L28" target="_top" title="m_target" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L28" xlink:show="new" xlink:title="m_target" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="176" x="148" y="368.6245">m_target : std::shared_ptr&lt;T&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="129.5" x2="403.5" y1="320.8047" y2="320.8047"/>
<ellipse cx="139.5" cy="331.8047" 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="250" x="148.5" y="335.0151">Proxy&lt;T&gt;(std::shared_ptr&lt;T&gt; target) : void</text>
<ellipse cx="139.5" cy="344.6094" 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="61" x="148.5" y="347.8198">m1() : void</text>
<ellipse cx="139.5" cy="357.4141" 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="61" x="148.5" y="360.6245">m2() : void</text>
<rect fill="#FEFECE" filter="url(#f1tn9hwvvvs6v2)" height="48" id="C_0001644966842838139424" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="131.5" y="159"/>
<ellipse cx="146.5" cy="175" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M149.4688,180.6406 Q148.8906,180.9375 148.25,181.0781 Q147.6094,181.2344 146.9063,181.2344 Q144.4063,181.2344 143.0781,179.5938 Q141.7656,177.9375 141.7656,174.8125 Q141.7656,171.6875 143.0781,170.0313 Q144.4063,168.375 146.9063,168.375 Q147.6094,168.375 148.25,168.5313 Q148.9063,168.6875 149.4688,168.9844 L149.4688,171.7031 Q148.8438,171.125 148.25,170.8594 Q147.6563,170.5781 147.0313,170.5781 Q145.6875,170.5781 145,171.6563 Q144.3125,172.7188 144.3125,174.8125 Q144.3125,176.9063 145,177.9844 Q145.6875,179.0469 147.0313,179.0469 Q147.6563,179.0469 148.25,178.7813 Q148.8438,178.5 149.4688,177.9219 L149.4688,180.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="160.5" y="179.1543">Proxy</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="51" x="201.5" y="156"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="49" x="202.5" y="168.1387">Target1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="132.5" x2="248.5" y1="191" y2="191"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="132.5" x2="248.5" y1="199" y2="199"/>
<rect fill="#FEFECE" filter="url(#f1tn9hwvvvs6v2)" height="48" id="C_0001190103100236298763" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="284.5" y="159"/>
<ellipse cx="299.5" cy="175" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M302.4688,180.6406 Q301.8906,180.9375 301.25,181.0781 Q300.6094,181.2344 299.9063,181.2344 Q297.4063,181.2344 296.0781,179.5938 Q294.7656,177.9375 294.7656,174.8125 Q294.7656,171.6875 296.0781,170.0313 Q297.4063,168.375 299.9063,168.375 Q300.6094,168.375 301.25,168.5313 Q301.9063,168.6875 302.4688,168.9844 L302.4688,171.7031 Q301.8438,171.125 301.25,170.8594 Q300.6563,170.5781 300.0313,170.5781 Q298.6875,170.5781 298,171.6563 Q297.3125,172.7188 297.3125,174.8125 Q297.3125,176.9063 298,177.9844 Q298.6875,179.0469 300.0313,179.0469 Q300.6563,179.0469 301.25,178.7813 Q301.8438,178.5 302.4688,177.9219 L302.4688,180.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="313.5" y="179.1543">Proxy</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="51" x="354.5" y="156"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="49" x="355.5" y="168.1387">Target2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="285.5" x2="401.5" y1="191" y2="191"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="285.5" x2="401.5" y1="199" y2="199"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L31" target="_top" title="ProxyHolder" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L31" xlink:show="new" xlink:title="ProxyHolder" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tn9hwvvvs6v2)" height="73.6094" id="C_0001906317303950647748" style="stroke: #A80036; stroke-width: 1.5;" width="169" x="182" y="8"/>
<ellipse cx="225.35" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M228.3188,29.6406 Q227.7406,29.9375 227.1,30.0781 Q226.4594,30.2344 225.7563,30.2344 Q223.2563,30.2344 221.9281,28.5938 Q220.6156,26.9375 220.6156,23.8125 Q220.6156,20.6875 221.9281,19.0313 Q223.2563,17.375 225.7563,17.375 Q226.4594,17.375 227.1,17.5313 Q227.7563,17.6875 228.3188,17.9844 L228.3188,20.7031 Q227.6938,20.125 227.1,19.8594 Q226.5063,19.5781 225.8813,19.5781 Q224.5375,19.5781 223.85,20.6563 Q223.1625,21.7188 223.1625,23.8125 Q223.1625,25.9063 223.85,26.9844 Q224.5375,28.0469 225.8813,28.0469 Q226.5063,28.0469 227.1,27.7813 Q227.6938,27.5 228.3188,26.9219 L228.3188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="74" x="245.65" y="28.1543">ProxyHolder</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="183" x2="350" y1="40" y2="40"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L18" target="_top" title="Proxy" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L18" xlink:show="new" xlink:title="Proxy" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzt378t4oekzw)" height="48" id="C_0001644966842838139424" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="90.5" y="159"/>
<ellipse cx="105.5" cy="175" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M108.4688,180.6406 Q107.8906,180.9375 107.25,181.0781 Q106.6094,181.2344 105.9063,181.2344 Q103.4063,181.2344 102.0781,179.5938 Q100.7656,177.9375 100.7656,174.8125 Q100.7656,171.6875 102.0781,170.0313 Q103.4063,168.375 105.9063,168.375 Q106.6094,168.375 107.25,168.5313 Q107.9063,168.6875 108.4688,168.9844 L108.4688,171.7031 Q107.8438,171.125 107.25,170.8594 Q106.6563,170.5781 106.0313,170.5781 Q104.6875,170.5781 104,171.6563 Q103.3125,172.7188 103.3125,174.8125 Q103.3125,176.9063 104,177.9844 Q104.6875,179.0469 106.0313,179.0469 Q106.6563,179.0469 107.25,178.7813 Q107.8438,178.5 108.4688,177.9219 L108.4688,180.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="119.5" y="179.1543">Proxy</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="51" x="160.5" y="156"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="49" x="161.5" y="168.1387">Target1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="91.5" x2="207.5" y1="191" y2="191"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="91.5" x2="207.5" y1="199" y2="199"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L33" target="_top" title="proxy1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L33" xlink:show="new" xlink:title="proxy1" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="188" y="46"/>
<ellipse cx="193" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L18" target="_top" title="Proxy" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L18" xlink:show="new" xlink:title="Proxy" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzt378t4oekzw)" height="48" id="C_0001190103100236298763" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="243.5" y="159"/>
<ellipse cx="258.5" cy="175" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M261.4688,180.6406 Q260.8906,180.9375 260.25,181.0781 Q259.6094,181.2344 258.9063,181.2344 Q256.4063,181.2344 255.0781,179.5938 Q253.7656,177.9375 253.7656,174.8125 Q253.7656,171.6875 255.0781,170.0313 Q256.4063,168.375 258.9063,168.375 Q259.6094,168.375 260.25,168.5313 Q260.9063,168.6875 261.4688,168.9844 L261.4688,171.7031 Q260.8438,171.125 260.25,170.8594 Q259.6563,170.5781 259.0313,170.5781 Q257.6875,170.5781 257,171.6563 Q256.3125,172.7188 256.3125,174.8125 Q256.3125,176.9063 257,177.9844 Q257.6875,179.0469 259.0313,179.0469 Q259.6563,179.0469 260.25,178.7813 Q260.8438,178.5 261.4688,177.9219 L261.4688,180.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="272.5" y="179.1543">Proxy</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="51" x="313.5" y="156"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="49" x="314.5" y="168.1387">Target2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="360.5" y1="191" y2="191"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="244.5" x2="360.5" y1="199" y2="199"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L33" target="_top" title="proxy1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L33" xlink:show="new" xlink:title="proxy1" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="143" x="202" y="54.2104">proxy1 : Proxy&lt;Target1&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L31" target="_top" title="ProxyHolder" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L31" xlink:show="new" xlink:title="ProxyHolder" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fzt378t4oekzw)" height="73.6094" id="C_0001906317303950647748" style="stroke: #A80036; stroke-width: 1.5;" width="169" x="141" y="8"/>
<ellipse cx="184.35" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M187.3188,29.6406 Q186.7406,29.9375 186.1,30.0781 Q185.4594,30.2344 184.7563,30.2344 Q182.2563,30.2344 180.9281,28.5938 Q179.6156,26.9375 179.6156,23.8125 Q179.6156,20.6875 180.9281,19.0313 Q182.2563,17.375 184.7563,17.375 Q185.4594,17.375 186.1,17.5313 Q186.7563,17.6875 187.3188,17.9844 L187.3188,20.7031 Q186.6938,20.125 186.1,19.8594 Q185.5063,19.5781 184.8813,19.5781 Q183.5375,19.5781 182.85,20.6563 Q182.1625,21.7188 182.1625,23.8125 Q182.1625,25.9063 182.85,26.9844 Q183.5375,28.0469 184.8813,28.0469 Q185.5063,28.0469 186.1,27.7813 Q186.6938,27.5 187.3188,26.9219 L187.3188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="74" x="204.65" y="28.1543">ProxyHolder</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="142" x2="309" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="142" x2="309" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L34" target="_top" title="proxy2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L34" xlink:show="new" xlink:title="proxy2" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="188" y="58.8047"/>
<ellipse cx="193" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L33" target="_top" title="proxy1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L33" xlink:show="new" xlink:title="proxy1" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="147" y="54"/>
<ellipse cx="152" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L34" target="_top" title="proxy2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00025/t00025.cc#L34" xlink:show="new" xlink:title="proxy2" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="143" x="202" y="67.0151">proxy2 : Proxy&lt;Target2&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L33" target="_top" title="proxy1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L33" xlink:show="new" xlink:title="proxy1" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="143" x="161" y="62.2104">proxy1 : Proxy&lt;Target1&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="183" x2="350" y1="73.6094" y2="73.6094"/>
<path d="M165.94,207.08 C145.49,226.29 115.92,254.09 91.69,276.85 " fill="none" id="C_0001644966842838139424-&gt;C_0001573849034571194138" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="87.85,280.46,97.1453,277.2045,91.491,277.0332,91.6623,271.3789,87.85,280.46" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M203.74,207.08 C210.72,219.25 219.68,234.87 228.63,250.48 " fill="none" id="C_0001644966842838139424-&gt;C_0001483353300536405088" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="234.75,247.07,238.63,267.9,222.6,254.04,234.75,247.07" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M367.89,207.08 C388.19,226.29 417.55,254.09 441.61,276.85 " fill="none" id="C_0001190103100236298763-&gt;C_0000751896409461834669" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="445.42,280.46,441.6255,271.3715,441.7857,277.026,436.1311,277.1863,445.42,280.46" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M330.09,207.08 C323.01,219.25 313.94,234.87 304.87,250.48 " fill="none" id="C_0001190103100236298763-&gt;C_0001483353300536405088" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="310.84,254.13,294.74,267.9,298.74,247.09,310.84,254.13" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M239.65,93.87 C236.23,99.97 232.78,106.13 229.5,112 C220.74,127.67 210.91,145.32 203.31,158.98 " fill="none" id="C_0001906317303950647748&lt;-C_0001644966842838139424" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="246.13,82.3,239.7072,85.5784,240.2631,92.768,246.6859,89.4896,246.13,82.3" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="235.5" cy="121.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="43" x="242.5" y="125.0669">proxy1</text>
<path d="M293.45,93.59 C305.91,115.61 320.15,140.76 330.25,158.6 " fill="none" id="C_0001906317303950647748&lt;-C_0001190103100236298763" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="286.93,82.09,286.4025,89.2818,292.8382,92.5348,293.3657,85.343,286.93,82.09" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="317.5" cy="121.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="43" x="324.5" y="125.0669">proxy2</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L34" target="_top" title="proxy2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L34" xlink:show="new" xlink:title="proxy2" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="147" y="66.8047"/>
<ellipse cx="152" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L34" target="_top" title="proxy2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00025/t00025.cc#L34" xlink:show="new" xlink:title="proxy2" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="143" x="161" y="75.0151">proxy2 : Proxy&lt;Target2&gt;</text>
</a>
<path d="M132.54,207.16 C117.89,227.14 96.41,256.47 78.96,280.29 " fill="none" id="C_0001644966842838139424-&gt;C_0001573849034571194138" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="75.97,284.37,84.5201,279.4818,78.9287,280.3393,78.0711,274.7479,75.97,284.37" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M167.14,207.16 C176.66,219.65 188.96,235.79 201.28,251.96 " fill="none" id="C_0001644966842838139424-&gt;C_0001483353300536405088" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="206.94,247.84,213.49,267.99,195.81,256.33,206.94,247.84" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M328.79,207.16 C351.68,227.31 385.35,256.96 412.51,280.88 " fill="none" id="C_0001190103100236298763-&gt;C_0000751896409461834669" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="416.47,284.37,412.3646,275.4176,412.7196,281.0633,407.0739,281.4183,416.47,284.37" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M294.19,207.16 C289.98,218.87 284.63,233.79 279.19,248.93 " fill="none" id="C_0001190103100236298763-&gt;C_0001483353300536405088" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="285.69,251.53,272.35,267.99,272.52,246.8,285.69,251.53" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M198.65,93.87 C195.23,99.97 191.78,106.13 188.5,112 C179.74,127.67 169.91,145.32 162.31,158.98 " fill="none" id="C_0001906317303950647748&lt;-C_0001644966842838139424" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="205.13,82.3,198.7072,85.5784,199.2631,92.768,205.6859,89.4896,205.13,82.3" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="194.5" cy="121.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="43" x="201.5" y="125.0669">proxy1</text>
<path d="M252.45,93.59 C264.91,115.61 279.15,140.76 289.25,158.6 " fill="none" id="C_0001906317303950647748&lt;-C_0001190103100236298763" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="245.93,82.09,245.4025,89.2818,251.8382,92.5348,252.3657,85.343,245.93,82.09" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="276.5" cy="121.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="43" x="283.5" y="125.0669">proxy2</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -74,9 +74,488 @@ struct StringMemento {
Caretaker<std::string> caretaker;
Originator<std::string> originator;
};
}
}
} // namespace t00026
} // namespace clanguml
```
## Generated UML diagrams
![t00026_class](./t00026_class.svg "Template memento pattern")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00026::Memento<T>",
"id": "1241204213727905390",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [
{
"access": "private",
"is_static": false,
"name": "m_value",
"source_location": {
"file": "../../tests/t00026/t00026.cc",
"line": 18
},
"type": "T"
}
],
"methods": [
{
"access": "public",
"is_const": false,
"is_consteval": false,
"is_constexpr": false,
"is_constructor": true,
"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": "Memento",
"parameters": [
{
"name": "v",
"type": "T &&"
}
],
"type": "void"
},
{
"access": "public",
"is_const": true,
"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": "value",
"parameters": [],
"type": "T"
}
],
"name": "Memento",
"namespace": "clanguml::t00026",
"source_location": {
"file": "../../tests/t00026/t00026.cc",
"line": 8
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00026::Originator<T>",
"id": "1324770803720816727",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [
{
"access": "private",
"is_static": false,
"name": "m_value",
"source_location": {
"file": "../../tests/t00026/t00026.cc",
"line": 37
},
"type": "T"
}
],
"methods": [
{
"access": "public",
"is_const": false,
"is_consteval": false,
"is_constexpr": false,
"is_constructor": true,
"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": "Originator",
"parameters": [
{
"name": "v",
"type": "T &&"
}
],
"type": "void"
},
{
"access": "public",
"is_const": true,
"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": "memoize_value",
"parameters": [],
"type": "Memento<T>"
},
{
"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": "load",
"parameters": [
{
"name": "m",
"type": "const Memento<T> &"
}
],
"type": "void"
},
{
"access": "public",
"is_const": true,
"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": "print",
"parameters": [],
"type": "void"
},
{
"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": "set",
"parameters": [
{
"name": "v",
"type": "T &&"
}
],
"type": "void"
}
],
"name": "Originator",
"namespace": "clanguml::t00026",
"source_location": {
"file": "../../tests/t00026/t00026.cc",
"line": 21
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00026::Caretaker<T>",
"id": "2032715387182792204",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [
{
"access": "private",
"is_static": false,
"name": "m_mementos",
"source_location": {
"file": "../../tests/t00026/t00026.cc",
"line": 50
},
"type": "std::unordered_map<std::string,Memento<T>>"
}
],
"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": "state",
"parameters": [
{
"name": "n",
"type": "const std::string &"
}
],
"type": "Memento<T> &"
},
{
"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": "set_state",
"parameters": [
{
"name": "s",
"type": "const std::string &"
},
{
"name": "m",
"type": "Memento<T> &&"
}
],
"type": "void"
}
],
"name": "Caretaker",
"namespace": "clanguml::t00026",
"source_location": {
"file": "../../tests/t00026/t00026.cc",
"line": 40
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00026::Caretaker<std::string>",
"id": "1708482137721157489",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "Caretaker",
"namespace": "clanguml::t00026",
"source_location": {
"file": "../../tests/t00026/t00026.cc",
"line": 40
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "std::string"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00026::Originator<std::string>",
"id": "1014247960805363560",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "Originator",
"namespace": "clanguml::t00026",
"source_location": {
"file": "../../tests/t00026/t00026.cc",
"line": 21
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "std::string"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00026::StringMemento",
"id": "851750942915129289",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "caretaker",
"source_location": {
"file": "../../tests/t00026/t00026.cc",
"line": 54
},
"type": "Caretaker<std::string>"
},
{
"access": "public",
"is_static": false,
"name": "originator",
"source_location": {
"file": "../../tests/t00026/t00026.cc",
"line": 55
},
"type": "Originator<std::string>"
}
],
"methods": [],
"name": "StringMemento",
"namespace": "clanguml::t00026",
"source_location": {
"file": "../../tests/t00026/t00026.cc",
"line": 53
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"schema_version": 1
},
"name": "t00026_class",
"relationships": [
{
"access": "public",
"destination": "1241204213727905390",
"source": "1324770803720816727",
"type": "dependency"
},
{
"access": "public",
"destination": "1241204213727905390",
"source": "2032715387182792204",
"type": "dependency"
},
{
"access": "private",
"destination": "1241204213727905390",
"label": "m_mementos",
"source": "2032715387182792204",
"type": "aggregation"
},
{
"access": "public",
"destination": "2032715387182792204",
"source": "1708482137721157489",
"type": "instantiation"
},
{
"access": "public",
"destination": "1324770803720816727",
"source": "1014247960805363560",
"type": "instantiation"
},
{
"access": "public",
"destination": "1708482137721157489",
"label": "caretaker",
"source": "851750942915129289",
"type": "aggregation"
},
{
"access": "public",
"destination": "1014247960805363560",
"label": "originator",
"source": "851750942915129289",
"type": "aggregation"
}
],
"using_namespace": "clanguml::t00026"
}
```

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="567px" preserveAspectRatio="none" style="width:690px;height:567px;" version="1.1" viewBox="0 0 690 567" width="690px" 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="583px" preserveAspectRatio="none" style="width:690px;height:583px;" version="1.1" viewBox="0 0 690 583" width="690px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1as79db1qkgb" width="300%" x="-1" y="-1">
<filter height="300%" id="f12cp19e7u6f9f" 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,125 +9,131 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L8" target="_top" title="Memento" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L8" xlink:show="new" xlink:title="Memento" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1as79db1qkgb)" height="86.4141" id="C_0001241204213727905390" style="stroke: #A80036; stroke-width: 1.5;" width="187" x="165.5" y="470"/>
<ellipse cx="220.25" cy="486" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M223.2188,491.6406 Q222.6406,491.9375 222,492.0781 Q221.3594,492.2344 220.6563,492.2344 Q218.1563,492.2344 216.8281,490.5938 Q215.5156,488.9375 215.5156,485.8125 Q215.5156,482.6875 216.8281,481.0313 Q218.1563,479.375 220.6563,479.375 Q221.3594,479.375 222,479.5313 Q222.6563,479.6875 223.2188,479.9844 L223.2188,482.7031 Q222.5938,482.125 222,481.8594 Q221.4063,481.5781 220.7813,481.5781 Q219.4375,481.5781 218.75,482.6563 Q218.0625,483.7188 218.0625,485.8125 Q218.0625,487.9063 218.75,488.9844 Q219.4375,490.0469 220.7813,490.0469 Q221.4063,490.0469 222,489.7813 Q222.5938,489.5 223.2188,488.9219 L223.2188,491.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="58" x="240.75" y="490.1543">Memento</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="346.5" y="467"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="347.5" y="479.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="166.5" x2="351.5" y1="502" y2="502"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L8" target="_top" title="Memento" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L8" xlink:show="new" xlink:title="Memento" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f12cp19e7u6f9f)" height="94.4141" id="C_0001241204213727905390" style="stroke: #A80036; stroke-width: 1.5;" width="162" x="178" y="478"/>
<ellipse cx="220.45" cy="494" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M223.4188,499.6406 Q222.8406,499.9375 222.2,500.0781 Q221.5594,500.2344 220.8563,500.2344 Q218.3563,500.2344 217.0281,498.5938 Q215.7156,496.9375 215.7156,493.8125 Q215.7156,490.6875 217.0281,489.0313 Q218.3563,487.375 220.8563,487.375 Q221.5594,487.375 222.2,487.5313 Q222.8563,487.6875 223.4188,487.9844 L223.4188,490.7031 Q222.7938,490.125 222.2,489.8594 Q221.6063,489.5781 220.9813,489.5781 Q219.6375,489.5781 218.95,490.6563 Q218.2625,491.7188 218.2625,493.8125 Q218.2625,495.9063 218.95,496.9844 Q219.6375,498.0469 220.9813,498.0469 Q221.6063,498.0469 222.2,497.7813 Q222.7938,497.5 223.4188,496.9219 L223.4188,499.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="58" x="240.55" y="498.1543">Memento</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="334" y="475"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="335" y="487.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="179" x2="339" y1="510" y2="510"/>
<ellipse cx="189" cy="521" 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="136" x="198" y="524.2104">Memento(T &amp;&amp; v) : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="179" x2="339" y1="530.8047" y2="530.8047"/>
<ellipse cx="189" cy="541.8047" 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="92" x="198" y="545.0151">value() const : T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="179" x2="339" y1="551.6094" y2="551.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L18" target="_top" title="m_value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L18" xlink:show="new" xlink:title="m_value" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="171.5" y="508"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="173.5" y="510"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L18" target="_top" title="m_value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L18" xlink:show="new" xlink:title="m_value" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="184" y="557.6094"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="186" y="559.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L18" target="_top" title="m_value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L18" xlink:show="new" xlink:title="m_value" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="66" x="185.5" y="516.2104">m_value : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L18" target="_top" title="m_value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L18" xlink:show="new" xlink:title="m_value" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="66" x="198" y="565.8198">m_value : T</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="166.5" x2="351.5" y1="522.8047" y2="522.8047"/>
<ellipse cx="176.5" cy="533.8047" 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="161" x="185.5" y="537.0151">Memento&lt;T&gt;(T &amp;&amp; v) : void</text>
<ellipse cx="176.5" cy="546.6094" 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="92" x="185.5" y="549.8198">value() const : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L21" target="_top" title="Originator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L21" xlink:show="new" xlink:title="Originator" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1as79db1qkgb)" height="124.8281" id="C_0001324770803720816727" style="stroke: #A80036; stroke-width: 1.5;" width="245" x="431.5" y="268"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L21" target="_top" title="Originator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L21" xlink:show="new" xlink:title="Originator" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f12cp19e7u6f9f)" height="132.8281" id="C_0001324770803720816727" style="stroke: #A80036; stroke-width: 1.5;" width="245" x="431.5" y="268"/>
<ellipse cx="513.25" cy="284" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M516.2188,289.6406 Q515.6406,289.9375 515,290.0781 Q514.3594,290.2344 513.6563,290.2344 Q511.1563,290.2344 509.8281,288.5938 Q508.5156,286.9375 508.5156,283.8125 Q508.5156,280.6875 509.8281,279.0313 Q511.1563,277.375 513.6563,277.375 Q514.3594,277.375 515,277.5313 Q515.6563,277.6875 516.2188,277.9844 L516.2188,280.7031 Q515.5938,280.125 515,279.8594 Q514.4063,279.5781 513.7813,279.5781 Q512.4375,279.5781 511.75,280.6563 Q511.0625,281.7188 511.0625,283.8125 Q511.0625,285.9063 511.75,286.9844 Q512.4375,288.0469 513.7813,288.0469 Q514.4063,288.0469 515,287.7813 Q515.5938,287.5 516.2188,286.9219 L516.2188,289.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="62" x="533.75" y="288.1543">Originator</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="670.5" y="265"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="671.5" y="277.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="432.5" x2="675.5" y1="300" y2="300"/>
<ellipse cx="442.5" cy="311" 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="141" x="451.5" y="314.2104">Originator(T &amp;&amp; v) : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="432.5" x2="675.5" y1="320.8047" y2="320.8047"/>
<ellipse cx="442.5" cy="331.8047" 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="208" x="451.5" y="335.0151">load(const Memento&lt;T&gt; &amp; m) : void</text>
<ellipse cx="442.5" cy="344.6094" 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="219" x="451.5" y="347.8198">memoize_value() const : Memento&lt;T&gt;</text>
<ellipse cx="442.5" cy="357.4141" 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="104" x="451.5" y="360.6245">print() const : void</text>
<ellipse cx="442.5" cy="370.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="102" x="451.5" y="373.4292">set(T &amp;&amp; v) : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="432.5" x2="675.5" y1="380.0234" y2="380.0234"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L37" target="_top" title="m_value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L37" xlink:show="new" xlink:title="m_value" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="437.5" y="306"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="439.5" y="308"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L37" target="_top" title="m_value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L37" xlink:show="new" xlink:title="m_value" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="437.5" y="386.0234"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="439.5" y="388.0234"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L37" target="_top" title="m_value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L37" xlink:show="new" xlink:title="m_value" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="66" x="451.5" y="314.2104">m_value : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L37" target="_top" title="m_value" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L37" xlink:show="new" xlink:title="m_value" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="66" x="451.5" y="394.2339">m_value : T</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="432.5" x2="675.5" y1="320.8047" y2="320.8047"/>
<ellipse cx="442.5" cy="331.8047" 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="166" x="451.5" y="335.0151">Originator&lt;T&gt;(T &amp;&amp; v) : void</text>
<ellipse cx="442.5" cy="344.6094" 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="219" x="451.5" y="347.8198">memoize_value() const : Memento&lt;T&gt;</text>
<ellipse cx="442.5" cy="357.4141" 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="208" x="451.5" y="360.6245">load(const Memento&lt;T&gt; &amp; m) : void</text>
<ellipse cx="442.5" cy="370.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="104" x="451.5" y="373.4292">print() const : void</text>
<ellipse cx="442.5" cy="383.0234" 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="102" x="451.5" y="386.2339">set(T &amp;&amp; v) : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L40" target="_top" title="Caretaker" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L40" xlink:show="new" xlink:title="Caretaker" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1as79db1qkgb)" height="86.4141" id="C_0002032715387182792204" style="stroke: #A80036; stroke-width: 1.5;" width="390" x="6" y="287.5"/>
<ellipse cx="160.25" cy="303.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M163.2188,309.1406 Q162.6406,309.4375 162,309.5781 Q161.3594,309.7344 160.6563,309.7344 Q158.1563,309.7344 156.8281,308.0938 Q155.5156,306.4375 155.5156,303.3125 Q155.5156,300.1875 156.8281,298.5313 Q158.1563,296.875 160.6563,296.875 Q161.3594,296.875 162,297.0313 Q162.6563,297.1875 163.2188,297.4844 L163.2188,300.2031 Q162.5938,299.625 162,299.3594 Q161.4063,299.0781 160.7813,299.0781 Q159.4375,299.0781 158.75,300.1563 Q158.0625,301.2188 158.0625,303.3125 Q158.0625,305.4063 158.75,306.4844 Q159.4375,307.5469 160.7813,307.5469 Q161.4063,307.5469 162,307.2813 Q162.5938,307 163.2188,306.4219 L163.2188,309.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="62" x="180.75" y="307.6543">Caretaker</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="390" y="284.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="391" y="296.6387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="395" y1="319.5" y2="319.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L40" target="_top" title="Caretaker" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L40" xlink:show="new" xlink:title="Caretaker" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f12cp19e7u6f9f)" height="86.4141" id="C_0002032715387182792204" style="stroke: #A80036; stroke-width: 1.5;" width="390" x="6" y="291.5"/>
<ellipse cx="160.25" cy="307.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M163.2188,313.1406 Q162.6406,313.4375 162,313.5781 Q161.3594,313.7344 160.6563,313.7344 Q158.1563,313.7344 156.8281,312.0938 Q155.5156,310.4375 155.5156,307.3125 Q155.5156,304.1875 156.8281,302.5313 Q158.1563,300.875 160.6563,300.875 Q161.3594,300.875 162,301.0313 Q162.6563,301.1875 163.2188,301.4844 L163.2188,304.2031 Q162.5938,303.625 162,303.3594 Q161.4063,303.0781 160.7813,303.0781 Q159.4375,303.0781 158.75,304.1563 Q158.0625,305.2188 158.0625,307.3125 Q158.0625,309.4063 158.75,310.4844 Q159.4375,311.5469 160.7813,311.5469 Q161.4063,311.5469 162,311.2813 Q162.5938,311 163.2188,310.4219 L163.2188,313.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="62" x="180.75" y="311.6543">Caretaker</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="390" y="288.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="391" y="300.6387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="395" y1="323.5" y2="323.5"/>
<ellipse cx="17" cy="334.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="339" x="26" y="337.7104">set_state(const std::string &amp; s, Memento&lt;T&gt; &amp;&amp; m) : void</text>
<ellipse cx="17" cy="347.3047" 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="259" x="26" y="350.5151">state(const std::string &amp; n) : Memento&lt;T&gt; &amp;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="395" y1="357.1094" y2="357.1094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L50" target="_top" title="m_mementos" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L50" xlink:show="new" xlink:title="m_mementos" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="325.5"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="327.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L50" target="_top" title="m_mementos" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L50" xlink:show="new" xlink:title="m_mementos" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="12" y="363.1094"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="365.1094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L50" target="_top" title="m_mementos" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L50" xlink:show="new" xlink:title="m_mementos" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="364" x="26" y="333.7104">m_mementos : std::unordered_map&lt;std::string,Memento&lt;T&gt;&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L50" target="_top" title="m_mementos" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L50" xlink:show="new" xlink:title="m_mementos" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="364" x="26" y="371.3198">m_mementos : std::unordered_map&lt;std::string,Memento&lt;T&gt;&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="395" y1="340.3047" y2="340.3047"/>
<ellipse cx="17" cy="351.3047" 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="259" x="26" y="354.5151">state(const std::string &amp; n) : Memento&lt;T&gt; &amp;</text>
<ellipse cx="17" cy="364.1094" 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="339" x="26" y="367.3198">set_state(const std::string &amp; s, Memento&lt;T&gt; &amp;&amp; m) : void</text>
<rect fill="#FEFECE" filter="url(#f1as79db1qkgb)" height="48" id="C_0001708482137721157489" style="stroke: #A80036; stroke-width: 1.5;" width="160" x="239" y="159"/>
<ellipse cx="254" cy="175" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M256.9688,180.6406 Q256.3906,180.9375 255.75,181.0781 Q255.1094,181.2344 254.4063,181.2344 Q251.9063,181.2344 250.5781,179.5938 Q249.2656,177.9375 249.2656,174.8125 Q249.2656,171.6875 250.5781,170.0313 Q251.9063,168.375 254.4063,168.375 Q255.1094,168.375 255.75,168.5313 Q256.4063,168.6875 256.9688,168.9844 L256.9688,171.7031 Q256.3438,171.125 255.75,170.8594 Q255.1563,170.5781 254.5313,170.5781 Q253.1875,170.5781 252.5,171.6563 Q251.8125,172.7188 251.8125,174.8125 Q251.8125,176.9063 252.5,177.9844 Q253.1875,179.0469 254.5313,179.0469 Q255.1563,179.0469 255.75,178.7813 Q256.3438,178.5 256.9688,177.9219 L256.9688,180.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="62" x="268" y="179.1543">Caretaker</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="64" x="338" y="156"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="62" x="339" y="168.1387">std::string</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="240" x2="398" y1="191" y2="191"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="240" x2="398" y1="199" y2="199"/>
<rect fill="#FEFECE" filter="url(#f1as79db1qkgb)" height="48" id="C_0001014247960805363560" style="stroke: #A80036; stroke-width: 1.5;" width="160" x="454" y="159"/>
<ellipse cx="469" cy="175" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M471.9688,180.6406 Q471.3906,180.9375 470.75,181.0781 Q470.1094,181.2344 469.4063,181.2344 Q466.9063,181.2344 465.5781,179.5938 Q464.2656,177.9375 464.2656,174.8125 Q464.2656,171.6875 465.5781,170.0313 Q466.9063,168.375 469.4063,168.375 Q470.1094,168.375 470.75,168.5313 Q471.4063,168.6875 471.9688,168.9844 L471.9688,171.7031 Q471.3438,171.125 470.75,170.8594 Q470.1563,170.5781 469.5313,170.5781 Q468.1875,170.5781 467.5,171.6563 Q466.8125,172.7188 466.8125,174.8125 Q466.8125,176.9063 467.5,177.9844 Q468.1875,179.0469 469.5313,179.0469 Q470.1563,179.0469 470.75,178.7813 Q471.3438,178.5 471.9688,177.9219 L471.9688,180.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="62" x="483" y="179.1543">Originator</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="64" x="553" y="156"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="62" x="554" y="168.1387">std::string</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="455" x2="613" y1="191" y2="191"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="455" x2="613" y1="199" y2="199"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L53" target="_top" title="StringMemento" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L53" xlink:show="new" xlink:title="StringMemento" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1as79db1qkgb)" height="73.6094" id="C_0000851750942915129289" style="stroke: #A80036; stroke-width: 1.5;" width="227" x="302.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L40" target="_top" title="Caretaker" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L40" xlink:show="new" xlink:title="Caretaker" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f12cp19e7u6f9f)" height="48" id="C_0001708482137721157489" style="stroke: #A80036; stroke-width: 1.5;" width="160" x="239" y="159"/>
<ellipse cx="254" cy="175" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M256.9688,180.6406 Q256.3906,180.9375 255.75,181.0781 Q255.1094,181.2344 254.4063,181.2344 Q251.9063,181.2344 250.5781,179.5938 Q249.2656,177.9375 249.2656,174.8125 Q249.2656,171.6875 250.5781,170.0313 Q251.9063,168.375 254.4063,168.375 Q255.1094,168.375 255.75,168.5313 Q256.4063,168.6875 256.9688,168.9844 L256.9688,171.7031 Q256.3438,171.125 255.75,170.8594 Q255.1563,170.5781 254.5313,170.5781 Q253.1875,170.5781 252.5,171.6563 Q251.8125,172.7188 251.8125,174.8125 Q251.8125,176.9063 252.5,177.9844 Q253.1875,179.0469 254.5313,179.0469 Q255.1563,179.0469 255.75,178.7813 Q256.3438,178.5 256.9688,177.9219 L256.9688,180.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="62" x="268" y="179.1543">Caretaker</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="64" x="338" y="156"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="62" x="339" y="168.1387">std::string</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="240" x2="398" y1="191" y2="191"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="240" x2="398" y1="199" y2="199"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L21" target="_top" title="Originator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L21" xlink:show="new" xlink:title="Originator" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f12cp19e7u6f9f)" height="48" id="C_0001014247960805363560" style="stroke: #A80036; stroke-width: 1.5;" width="160" x="454" y="159"/>
<ellipse cx="469" cy="175" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M471.9688,180.6406 Q471.3906,180.9375 470.75,181.0781 Q470.1094,181.2344 469.4063,181.2344 Q466.9063,181.2344 465.5781,179.5938 Q464.2656,177.9375 464.2656,174.8125 Q464.2656,171.6875 465.5781,170.0313 Q466.9063,168.375 469.4063,168.375 Q470.1094,168.375 470.75,168.5313 Q471.4063,168.6875 471.9688,168.9844 L471.9688,171.7031 Q471.3438,171.125 470.75,170.8594 Q470.1563,170.5781 469.5313,170.5781 Q468.1875,170.5781 467.5,171.6563 Q466.8125,172.7188 466.8125,174.8125 Q466.8125,176.9063 467.5,177.9844 Q468.1875,179.0469 469.5313,179.0469 Q470.1563,179.0469 470.75,178.7813 Q471.3438,178.5 471.9688,177.9219 L471.9688,180.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="62" x="483" y="179.1543">Originator</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="64" x="553" y="156"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="62" x="554" y="168.1387">std::string</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="455" x2="613" y1="191" y2="191"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="455" x2="613" y1="199" y2="199"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L53" target="_top" title="StringMemento" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L53" xlink:show="new" xlink:title="StringMemento" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f12cp19e7u6f9f)" height="73.6094" id="C_0000851750942915129289" style="stroke: #A80036; stroke-width: 1.5;" width="227" x="302.5" y="8"/>
<ellipse cx="364.25" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M367.2188,29.6406 Q366.6406,29.9375 366,30.0781 Q365.3594,30.2344 364.6563,30.2344 Q362.1563,30.2344 360.8281,28.5938 Q359.5156,26.9375 359.5156,23.8125 Q359.5156,20.6875 360.8281,19.0313 Q362.1563,17.375 364.6563,17.375 Q365.3594,17.375 366,17.5313 Q366.6563,17.6875 367.2188,17.9844 L367.2188,20.7031 Q366.5938,20.125 366,19.8594 Q365.4063,19.5781 364.7813,19.5781 Q363.4375,19.5781 362.75,20.6563 Q362.0625,21.7188 362.0625,23.8125 Q362.0625,25.9063 362.75,26.9844 Q363.4375,28.0469 364.7813,28.0469 Q365.4063,28.0469 366,27.7813 Q366.5938,27.5 367.2188,26.9219 L367.2188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="95" x="384.75" y="28.1543">StringMemento</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="303.5" x2="528.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="303.5" x2="528.5" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L54" target="_top" title="caretaker" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L54" xlink:show="new" xlink:title="caretaker" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="308.5" y="46"/>
<ellipse cx="313.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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L54" target="_top" title="caretaker" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L54" xlink:show="new" xlink:title="caretaker" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="308.5" y="54"/>
<ellipse cx="313.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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L54" target="_top" title="caretaker" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L54" xlink:show="new" xlink:title="caretaker" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="199" x="322.5" y="54.2104">caretaker : Caretaker&lt;std::string&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L54" target="_top" title="caretaker" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L54" xlink:show="new" xlink:title="caretaker" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="199" x="322.5" y="62.2104">caretaker : Caretaker&lt;std::string&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L55" target="_top" title="originator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L55" xlink:show="new" xlink:title="originator" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="308.5" y="58.8047"/>
<ellipse cx="313.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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L55" target="_top" title="originator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L55" xlink:show="new" xlink:title="originator" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="308.5" y="66.8047"/>
<ellipse cx="313.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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L55" target="_top" title="originator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00026/t00026.cc#L55" xlink:show="new" xlink:title="originator" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="201" x="322.5" y="67.0151">originator : Originator&lt;std::string&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L55" target="_top" title="originator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00026/t00026.cc#L55" xlink:show="new" xlink:title="originator" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="201" x="322.5" y="75.0151">originator : Originator&lt;std::string&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="303.5" x2="528.5" y1="73.6094" y2="73.6094"/>
<path d="M453.3,393.11 C413.53,417.45 368.68,444.89 332.11,467.27 " fill="none" id="C_0001324770803720816727-&gt;C_0001241204213727905390" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="327.69,469.97,337.4545,468.6835,331.9546,467.3599,333.2783,461.86,327.69,469.97" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M206.89,373.66 C210.4,394.04 215.64,418.65 223,440 C225.88,448.36 229.54,456.99 233.41,465.24 " fill="none" id="C_0002032715387182792204-&gt;C_0001241204213727905390" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="235.58,469.78,235.2966,459.9352,233.4187,465.2713,228.0826,463.3933,235.58,469.78" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M218.69,386.54 C227.3,413.36 237.5,445.1 245.49,469.95 " fill="none" id="C_0002032715387182792204&lt;-C_0001241204213727905390" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="214.6,373.82,212.6303,380.7569,218.2759,385.2431,220.2457,378.3062,214.6,373.82" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="239" y="429.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="90" x="249" y="436.0669">m_mementos</text>
<path d="M300.3,207.05 C286.22,224.42 266.27,249.02 247.94,271.62 " fill="none" id="C_0001708482137721157489-&gt;C_0002032715387182792204" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="253.33,276.09,235.3,287.21,242.46,267.27,253.33,276.09" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M537.17,207.05 C538.74,218.48 540.74,233.03 542.81,248.08 " fill="none" id="C_0001014247960805363560-&gt;C_0001324770803720816727" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="549.75,247.18,545.54,267.94,535.88,249.08,549.75,247.18" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M451.24,401.16 C413.21,425.46 370.8,452.56 335.51,475.11 " fill="none" id="C_0001324770803720816727-&gt;C_0001241204213727905390" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="331.24,477.84,340.9795,476.3764,335.4565,475.1528,336.6801,469.6299,331.24,477.84" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M206.67,377.54 C210.19,398.96 215.51,425.22 223,448 C225.68,456.15 229.03,464.57 232.6,472.7 " fill="none" id="C_0002032715387182792204-&gt;C_0001241204213727905390" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="234.85,477.72,234.8185,467.8712,232.8047,473.1575,227.5185,471.1436,234.85,477.72" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M217.93,390.52 C226.46,418.25 236.69,451.5 244.81,477.88 " fill="none" id="C_0002032715387182792204&lt;-C_0001241204213727905390" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="214.02,377.8,211.9636,384.7117,217.5527,389.2682,219.6091,382.3565,214.02,377.8" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="239" y="437.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="90" x="249" y="444.0669">m_mementos</text>
<path d="M300.82,207.03 C286.43,225.27 265.68,251.55 246.82,275.44 " fill="none" id="C_0001708482137721157489-&gt;C_0002032715387182792204" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="252.06,280.11,234.17,291.47,241.07,271.44,252.06,280.11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M537.08,207.03 C538.6,218.36 540.53,232.81 542.54,247.85 " fill="none" id="C_0001014247960805363560-&gt;C_0001324770803720816727" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="549.49,247.02,545.21,267.77,535.62,248.87,549.49,247.02" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M382.71,92.68 C366.85,114.91 348.59,140.52 335.69,158.6 " fill="none" id="C_0000851750942915129289&lt;-C_0001708482137721157489" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="390.26,82.09,383.5206,84.6552,383.2964,91.8628,390.0358,89.2976,390.26,82.09" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="374" cy="121.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 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:1202px;height:390px;" version="1.1" viewBox="0 0 1202 390" width="1202px" 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="398px" preserveAspectRatio="none" style="width:1289px;height:398px;" version="1.1" viewBox="0 0 1289 398" width="1289px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1ot8575tod6ta" width="300%" x="-1" y="-1">
<filter height="300%" id="ftwm5ynga2vv" 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,187 +9,200 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L8" target="_top" title="Shape" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L8" xlink:show="new" xlink:title="Shape" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1ot8575tod6ta)" height="73.6094" id="C_0001593092483959332221" style="stroke: #A80036; stroke-width: 1.5;" width="170" x="310.5" y="184"/>
<ellipse cx="371.25" cy="200" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M371.3594,195.3438 L370.2031,200.4219 L372.5313,200.4219 L371.3594,195.3438 Z M369.875,193.1094 L372.8594,193.1094 L376.2188,205.5 L373.7656,205.5 L373,202.4375 L369.7188,202.4375 L368.9688,205.5 L366.5313,205.5 L369.875,193.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="40" x="391.75" y="204.1543">Shape</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="311.5" x2="479.5" y1="216" y2="216"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="311.5" x2="479.5" y1="224" y2="224"/>
<ellipse cx="321.5" cy="235" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="108" x="330.5" y="238.2104">display() = 0 : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L8" target="_top" title="Shape" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L8" xlink:show="new" xlink:title="Shape" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ftwm5ynga2vv)" height="81.6094" id="C_0001593092483959332221" style="stroke: #A80036; stroke-width: 1.5;" width="230" x="310.5" y="184"/>
<ellipse cx="401.25" cy="200" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M401.3594,195.3438 L400.2031,200.4219 L402.5313,200.4219 L401.3594,195.3438 Z M399.875,193.1094 L402.8594,193.1094 L406.2188,205.5 L403.7656,205.5 L403,202.4375 L399.7188,202.4375 L398.9688,205.5 L396.5313,205.5 L399.875,193.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="40" x="421.75" y="204.1543">Shape</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="311.5" x2="539.5" y1="216" y2="216"/>
<ellipse cx="321.5" cy="227" 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="204" x="330.5" y="230.2104">~Shape() constexpr = default : void</text>
<line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="311.5" x2="539.5" y1="236.8047" y2="236.8047"/>
<ellipse cx="321.5" cy="247.8047" 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="144" x="330.5" y="251.0151">~Shape() = default : void</text>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="108" x="330.5" y="251.0151">display() = 0 : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="311.5" x2="539.5" y1="257.6094" y2="257.6094"/>
</a>
<rect fill="#FEFECE" filter="url(#f1ot8575tod6ta)" height="48" id="C_0001568932879061562228" style="stroke: #A80036; stroke-width: 1.5;" width="57" x="700" y="33.5"/>
<ellipse cx="715" cy="49.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M717.9688,55.1406 Q717.3906,55.4375 716.75,55.5781 Q716.1094,55.7344 715.4063,55.7344 Q712.9063,55.7344 711.5781,54.0938 Q710.2656,52.4375 710.2656,49.3125 Q710.2656,46.1875 711.5781,44.5313 Q712.9063,42.875 715.4063,42.875 Q716.1094,42.875 716.75,43.0313 Q717.4063,43.1875 717.9688,43.4844 L717.9688,46.2031 Q717.3438,45.625 716.75,45.3594 Q716.1563,45.0781 715.5313,45.0781 Q714.1875,45.0781 713.5,46.1563 Q712.8125,47.2188 712.8125,49.3125 Q712.8125,51.4063 713.5,52.4844 Q714.1875,53.5469 715.5313,53.5469 Q716.1563,53.5469 716.75,53.2813 Q717.3438,53 717.9688,52.4219 L717.9688,55.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="25" x="729" y="53.6543">Line</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="701" x2="756" y1="65.5" y2="65.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="701" x2="756" y1="73.5" y2="73.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L15" target="_top" title="Line" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L15" xlink:show="new" xlink:title="Line" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1ot8575tod6ta)" height="60.8047" id="C_0000142374082478337852" style="stroke: #A80036; stroke-width: 1.5;" width="109" x="150" y="319"/>
<ellipse cx="169.05" cy="335" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M172.0188,340.6406 Q171.4406,340.9375 170.8,341.0781 Q170.1594,341.2344 169.4563,341.2344 Q166.9563,341.2344 165.6281,339.5938 Q164.3156,337.9375 164.3156,334.8125 Q164.3156,331.6875 165.6281,330.0313 Q166.9563,328.375 169.4563,328.375 Q170.1594,328.375 170.8,328.5313 Q171.4563,328.6875 172.0188,328.9844 L172.0188,331.7031 Q171.3938,331.125 170.8,330.8594 Q170.2063,330.5781 169.5813,330.5781 Q168.2375,330.5781 167.55,331.6563 Q166.8625,332.7188 166.8625,334.8125 Q166.8625,336.9063 167.55,337.9844 Q168.2375,339.0469 169.5813,339.0469 Q170.2063,339.0469 170.8,338.7813 Q171.3938,338.5 172.0188,337.9219 L172.0188,340.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="25" x="183.95" y="339.1543">Line</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="41" x="221" y="316"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="39" x="222" y="328.1387">T&lt;&gt;...</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="151" x2="258" y1="351" y2="351"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L14" target="_top" title="Line" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L14" xlink:show="new" xlink:title="Line" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ftwm5ynga2vv)" height="48" id="C_0001568932879061562228" style="stroke: #A80036; stroke-width: 1.5;" width="57" x="764" y="33.5"/>
<ellipse cx="779" cy="49.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M781.9688,55.1406 Q781.3906,55.4375 780.75,55.5781 Q780.1094,55.7344 779.4063,55.7344 Q776.9063,55.7344 775.5781,54.0938 Q774.2656,52.4375 774.2656,49.3125 Q774.2656,46.1875 775.5781,44.5313 Q776.9063,42.875 779.4063,42.875 Q780.1094,42.875 780.75,43.0313 Q781.4063,43.1875 781.9688,43.4844 L781.9688,46.2031 Q781.3438,45.625 780.75,45.3594 Q780.1563,45.0781 779.5313,45.0781 Q778.1875,45.0781 777.5,46.1563 Q776.8125,47.2188 776.8125,49.3125 Q776.8125,51.4063 777.5,52.4844 Q778.1875,53.5469 779.5313,53.5469 Q780.1563,53.5469 780.75,53.2813 Q781.3438,53 781.9688,52.4219 L781.9688,55.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="25" x="793" y="53.6543">Line</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="765" x2="820" y1="65.5" y2="65.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="765" x2="820" y1="73.5" y2="73.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L15" target="_top" title="Line" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L15" xlink:show="new" xlink:title="Line" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ftwm5ynga2vv)" height="60.8047" id="C_0000142374082478337852" style="stroke: #A80036; stroke-width: 1.5;" width="109" x="150" y="327"/>
<ellipse cx="169.05" cy="343" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M172.0188,348.6406 Q171.4406,348.9375 170.8,349.0781 Q170.1594,349.2344 169.4563,349.2344 Q166.9563,349.2344 165.6281,347.5938 Q164.3156,345.9375 164.3156,342.8125 Q164.3156,339.6875 165.6281,338.0313 Q166.9563,336.375 169.4563,336.375 Q170.1594,336.375 170.8,336.5313 Q171.4563,336.6875 172.0188,336.9844 L172.0188,339.7031 Q171.3938,339.125 170.8,338.8594 Q170.2063,338.5781 169.5813,338.5781 Q168.2375,338.5781 167.55,339.6563 Q166.8625,340.7188 166.8625,342.8125 Q166.8625,344.9063 167.55,345.9844 Q168.2375,347.0469 169.5813,347.0469 Q170.2063,347.0469 170.8,346.7813 Q171.3938,346.5 172.0188,345.9219 L172.0188,348.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="25" x="183.95" y="347.1543">Line</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="41" x="221" y="324"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="39" x="222" y="336.1387">T&lt;&gt;...</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="151" x2="258" y1="359" y2="359"/>
<ellipse cx="161" cy="370" 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="83" x="170" y="373.2104">display() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="151" x2="258" y1="379.8047" y2="379.8047"/>
</a>
<rect fill="#FEFECE" filter="url(#f1ot8575tod6ta)" height="48" id="C_0001833467466291294724" style="stroke: #A80036; stroke-width: 1.5;" width="58" x="864.5" y="33.5"/>
<ellipse cx="879.5" cy="49.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M882.4688,55.1406 Q881.8906,55.4375 881.25,55.5781 Q880.6094,55.7344 879.9063,55.7344 Q877.4063,55.7344 876.0781,54.0938 Q874.7656,52.4375 874.7656,49.3125 Q874.7656,46.1875 876.0781,44.5313 Q877.4063,42.875 879.9063,42.875 Q880.6094,42.875 881.25,43.0313 Q881.9063,43.1875 882.4688,43.4844 L882.4688,46.2031 Q881.8438,45.625 881.25,45.3594 Q880.6563,45.0781 880.0313,45.0781 Q878.6875,45.0781 878,46.1563 Q877.3125,47.2188 877.3125,49.3125 Q877.3125,51.4063 878,52.4844 Q878.6875,53.5469 880.0313,53.5469 Q880.6563,53.5469 881.25,53.2813 Q881.8438,53 882.4688,52.4219 L882.4688,55.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="26" x="893.5" y="53.6543">Text</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="865.5" x2="921.5" y1="65.5" y2="65.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="865.5" x2="921.5" y1="73.5" y2="73.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L25" target="_top" title="Text" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L25" xlink:show="new" xlink:title="Text" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1ot8575tod6ta)" height="60.8047" id="C_0001114634647721878603" style="stroke: #A80036; stroke-width: 1.5;" width="109" x="532" y="319"/>
<ellipse cx="550.6" cy="335" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M553.5688,340.6406 Q552.9906,340.9375 552.35,341.0781 Q551.7094,341.2344 551.0063,341.2344 Q548.5063,341.2344 547.1781,339.5938 Q545.8656,337.9375 545.8656,334.8125 Q545.8656,331.6875 547.1781,330.0313 Q548.5063,328.375 551.0063,328.375 Q551.7094,328.375 552.35,328.5313 Q553.0063,328.6875 553.5688,328.9844 L553.5688,331.7031 Q552.9438,331.125 552.35,330.8594 Q551.7563,330.5781 551.1313,330.5781 Q549.7875,330.5781 549.1,331.6563 Q548.4125,332.7188 548.4125,334.8125 Q548.4125,336.9063 549.1,337.9844 Q549.7875,339.0469 551.1313,339.0469 Q551.7563,339.0469 552.35,338.7813 Q552.9438,338.5 553.5688,337.9219 L553.5688,340.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="26" x="565.4" y="339.1543">Text</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="41" x="603" y="316"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="39" x="604" y="328.1387">T&lt;&gt;...</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="533" x2="640" y1="351" y2="351"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="533" x2="640" y1="359" y2="359"/>
<ellipse cx="543" cy="370" 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="83" x="552" y="373.2104">display() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L24" target="_top" title="Text" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L24" xlink:show="new" xlink:title="Text" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ftwm5ynga2vv)" height="48" id="C_0001833467466291294724" style="stroke: #A80036; stroke-width: 1.5;" width="58" x="943.5" y="33.5"/>
<ellipse cx="958.5" cy="49.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M961.4688,55.1406 Q960.8906,55.4375 960.25,55.5781 Q959.6094,55.7344 958.9063,55.7344 Q956.4063,55.7344 955.0781,54.0938 Q953.7656,52.4375 953.7656,49.3125 Q953.7656,46.1875 955.0781,44.5313 Q956.4063,42.875 958.9063,42.875 Q959.6094,42.875 960.25,43.0313 Q960.9063,43.1875 961.4688,43.4844 L961.4688,46.2031 Q960.8438,45.625 960.25,45.3594 Q959.6563,45.0781 959.0313,45.0781 Q957.6875,45.0781 957,46.1563 Q956.3125,47.2188 956.3125,49.3125 Q956.3125,51.4063 957,52.4844 Q957.6875,53.5469 959.0313,53.5469 Q959.6563,53.5469 960.25,53.2813 Q960.8438,53 961.4688,52.4219 L961.4688,55.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="26" x="972.5" y="53.6543">Text</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="944.5" x2="1000.5" y1="65.5" y2="65.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="944.5" x2="1000.5" y1="73.5" y2="73.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L34" target="_top" title="ShapeDecorator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L34" xlink:show="new" xlink:title="ShapeDecorator" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1ot8575tod6ta)" height="60.8047" id="C_0002049188825706164566" style="stroke: #A80036; stroke-width: 1.5;" width="135" x="994" y="27"/>
<ellipse cx="1009" cy="43" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1009.1094,38.3438 L1007.9531,43.4219 L1010.2813,43.4219 L1009.1094,38.3438 Z M1007.625,36.1094 L1010.6094,36.1094 L1013.9688,48.5 L1011.5156,48.5 L1010.75,45.4375 L1007.4688,45.4375 L1006.7188,48.5 L1004.2813,48.5 L1007.625,36.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="103" x="1023" y="47.1543">ShapeDecorator</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="995" x2="1128" y1="59" y2="59"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="995" x2="1128" y1="67" y2="67"/>
<ellipse cx="1005" cy="78" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="108" x="1014" y="81.2104">display() = 0 : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L25" target="_top" title="Text" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L25" xlink:show="new" xlink:title="Text" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ftwm5ynga2vv)" height="60.8047" id="C_0001114634647721878603" style="stroke: #A80036; stroke-width: 1.5;" width="109" x="592" y="327"/>
<ellipse cx="610.6" cy="343" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M613.5688,348.6406 Q612.9906,348.9375 612.35,349.0781 Q611.7094,349.2344 611.0063,349.2344 Q608.5063,349.2344 607.1781,347.5938 Q605.8656,345.9375 605.8656,342.8125 Q605.8656,339.6875 607.1781,338.0313 Q608.5063,336.375 611.0063,336.375 Q611.7094,336.375 612.35,336.5313 Q613.0063,336.6875 613.5688,336.9844 L613.5688,339.7031 Q612.9438,339.125 612.35,338.8594 Q611.7563,338.5781 611.1313,338.5781 Q609.7875,338.5781 609.1,339.6563 Q608.4125,340.7188 608.4125,342.8125 Q608.4125,344.9063 609.1,345.9844 Q609.7875,347.0469 611.1313,347.0469 Q611.7563,347.0469 612.35,346.7813 Q612.9438,346.5 613.5688,345.9219 L613.5688,348.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="26" x="625.4" y="347.1543">Text</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="41" x="663" y="324"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="39" x="664" y="336.1387">T&lt;&gt;...</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="593" x2="700" y1="359" y2="359"/>
<ellipse cx="603" cy="370" 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="83" x="612" y="373.2104">display() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="593" x2="700" y1="379.8047" y2="379.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L38" target="_top" title="Color" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L38" xlink:show="new" xlink:title="Color" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1ot8575tod6ta)" height="60.8047" id="C_0001473536569433029444" style="stroke: #A80036; stroke-width: 1.5;" width="109" x="935" y="190.5"/>
<ellipse cx="965.3" cy="206.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M968.2688,212.1406 Q967.6906,212.4375 967.05,212.5781 Q966.4094,212.7344 965.7063,212.7344 Q963.2063,212.7344 961.8781,211.0938 Q960.5656,209.4375 960.5656,206.3125 Q960.5656,203.1875 961.8781,201.5313 Q963.2063,199.875 965.7063,199.875 Q966.4094,199.875 967.05,200.0313 Q967.7063,200.1875 968.2688,200.4844 L968.2688,203.2031 Q967.6438,202.625 967.05,202.3594 Q966.4563,202.0781 965.8313,202.0781 Q964.4875,202.0781 963.8,203.1563 Q963.1125,204.2188 963.1125,206.3125 Q963.1125,208.4063 963.8,209.4844 Q964.4875,210.5469 965.8313,210.5469 Q966.4563,210.5469 967.05,210.2813 Q967.6438,210 968.2688,209.4219 L968.2688,212.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="32" x="982.7" y="210.6543">Color</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="1038" y="187.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="1039" y="199.6387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="936" x2="1043" y1="222.5" y2="222.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="936" x2="1043" y1="230.5" y2="230.5"/>
<ellipse cx="946" cy="241.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="83" x="955" y="244.7104">display() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L34" target="_top" title="ShapeDecorator" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L34" xlink:show="new" xlink:title="ShapeDecorator" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ftwm5ynga2vv)" height="60.8047" id="C_0002049188825706164566" style="stroke: #A80036; stroke-width: 1.5;" width="135" x="1081" y="27"/>
<ellipse cx="1096" cy="43" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1096.1094,38.3438 L1094.9531,43.4219 L1097.2813,43.4219 L1096.1094,38.3438 Z M1094.625,36.1094 L1097.6094,36.1094 L1100.9688,48.5 L1098.5156,48.5 L1097.75,45.4375 L1094.4688,45.4375 L1093.7188,48.5 L1091.2813,48.5 L1094.625,36.1094 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="103" x="1110" y="47.1543">ShapeDecorator</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1082" x2="1215" y1="59" y2="59"/>
<ellipse cx="1092" cy="70" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="108" x="1101" y="73.2104">display() = 0 : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1082" x2="1215" y1="79.8047" y2="79.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L43" target="_top" title="Weight" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L43" xlink:show="new" xlink:title="Weight" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1ot8575tod6ta)" height="60.8047" id="C_0002049455532387561338" style="stroke: #A80036; stroke-width: 1.5;" width="109" x="1079" y="190.5"/>
<ellipse cx="1104.35" cy="206.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1107.3188,212.1406 Q1106.7406,212.4375 1106.1,212.5781 Q1105.4594,212.7344 1104.7563,212.7344 Q1102.2563,212.7344 1100.9281,211.0938 Q1099.6156,209.4375 1099.6156,206.3125 Q1099.6156,203.1875 1100.9281,201.5313 Q1102.2563,199.875 1104.7563,199.875 Q1105.4594,199.875 1106.1,200.0313 Q1106.7563,200.1875 1107.3188,200.4844 L1107.3188,203.2031 Q1106.6938,202.625 1106.1,202.3594 Q1105.5063,202.0781 1104.8813,202.0781 Q1103.5375,202.0781 1102.85,203.1563 Q1102.1625,204.2188 1102.1625,206.3125 Q1102.1625,208.4063 1102.85,209.4844 Q1103.5375,210.5469 1104.8813,210.5469 Q1105.5063,210.5469 1106.1,210.2813 Q1106.6938,210 1107.3188,209.4219 L1107.3188,212.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="43" x="1120.65" y="210.6543">Weight</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="1182" y="187.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="1183" y="199.6387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1080" x2="1187" y1="222.5" y2="222.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1080" x2="1187" y1="230.5" y2="230.5"/>
<ellipse cx="1090" cy="241.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="83" x="1099" y="244.7104">display() : void</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L38" target="_top" title="Color" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L38" xlink:show="new" xlink:title="Color" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ftwm5ynga2vv)" height="60.8047" id="C_0001473536569433029444" style="stroke: #A80036; stroke-width: 1.5;" width="109" x="1022" y="194.5"/>
<ellipse cx="1052.3" cy="210.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1055.2688,216.1406 Q1054.6906,216.4375 1054.05,216.5781 Q1053.4094,216.7344 1052.7063,216.7344 Q1050.2063,216.7344 1048.8781,215.0938 Q1047.5656,213.4375 1047.5656,210.3125 Q1047.5656,207.1875 1048.8781,205.5313 Q1050.2063,203.875 1052.7063,203.875 Q1053.4094,203.875 1054.05,204.0313 Q1054.7063,204.1875 1055.2688,204.4844 L1055.2688,207.2031 Q1054.6438,206.625 1054.05,206.3594 Q1053.4563,206.0781 1052.8313,206.0781 Q1051.4875,206.0781 1050.8,207.1563 Q1050.1125,208.2188 1050.1125,210.3125 Q1050.1125,212.4063 1050.8,213.4844 Q1051.4875,214.5469 1052.8313,214.5469 Q1053.4563,214.5469 1054.05,214.2813 Q1054.6438,214 1055.2688,213.4219 L1055.2688,216.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="32" x="1069.7" y="214.6543">Color</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="1125" y="191.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="1126" y="203.6387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1023" x2="1130" y1="226.5" y2="226.5"/>
<ellipse cx="1033" cy="237.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="83" x="1042" y="240.7104">display() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1023" x2="1130" y1="247.3047" y2="247.3047"/>
</a>
<rect fill="#FEFECE" filter="url(#f1ot8575tod6ta)" height="48" id="C_0002082936326417164202" style="stroke: #A80036; stroke-width: 1.5;" width="141" x="134" y="197"/>
<ellipse cx="149" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M151.9688,218.6406 Q151.3906,218.9375 150.75,219.0781 Q150.1094,219.2344 149.4063,219.2344 Q146.9063,219.2344 145.5781,217.5938 Q144.2656,215.9375 144.2656,212.8125 Q144.2656,209.6875 145.5781,208.0313 Q146.9063,206.375 149.4063,206.375 Q150.1094,206.375 150.75,206.5313 Q151.4063,206.6875 151.9688,206.9844 L151.9688,209.7031 Q151.3438,209.125 150.75,208.8594 Q150.1563,208.5781 149.5313,208.5781 Q148.1875,208.5781 147.5,209.6563 Q146.8125,210.7188 146.8125,212.8125 Q146.8125,214.9063 147.5,215.9844 Q148.1875,217.0469 149.5313,217.0469 Q150.1563,217.0469 150.75,216.7813 Q151.3438,216.5 151.9688,215.9219 L151.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="25" x="163" y="217.1543">Line</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="82" x="196" y="194"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="80" x="197" y="206.1387">Color,Weight</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="135" x2="274" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="135" x2="274" y1="237" y2="237"/>
<rect fill="#FEFECE" filter="url(#f1ot8575tod6ta)" height="48" id="C_0000675132943535054947" style="stroke: #A80036; stroke-width: 1.5;" width="93" 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="25" x="35" y="217.1543">Line</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="34" x="68" y="194"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="32" x="69" y="206.1387">Color</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="98" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="98" y1="237" y2="237"/>
<rect fill="#FEFECE" filter="url(#f1ot8575tod6ta)" height="48" id="C_0001678874302644303776" style="stroke: #A80036; stroke-width: 1.5;" width="142" x="515.5" y="197"/>
<ellipse cx="530.5" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M533.4688,218.6406 Q532.8906,218.9375 532.25,219.0781 Q531.6094,219.2344 530.9063,219.2344 Q528.4063,219.2344 527.0781,217.5938 Q525.7656,215.9375 525.7656,212.8125 Q525.7656,209.6875 527.0781,208.0313 Q528.4063,206.375 530.9063,206.375 Q531.6094,206.375 532.25,206.5313 Q532.9063,206.6875 533.4688,206.9844 L533.4688,209.7031 Q532.8438,209.125 532.25,208.8594 Q531.6563,208.5781 531.0313,208.5781 Q529.6875,208.5781 529,209.6563 Q528.3125,210.7188 528.3125,212.8125 Q528.3125,214.9063 529,215.9844 Q529.6875,217.0469 531.0313,217.0469 Q531.6563,217.0469 532.25,216.7813 Q532.8438,216.5 533.4688,215.9219 L533.4688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="26" x="544.5" y="217.1543">Text</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="82" x="578.5" y="194"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="80" x="579.5" y="206.1387">Color,Weight</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="516.5" x2="656.5" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="516.5" x2="656.5" y1="237" y2="237"/>
<rect fill="#FEFECE" filter="url(#f1ot8575tod6ta)" height="48" id="C_0001887786688778664182" style="stroke: #A80036; stroke-width: 1.5;" width="94" x="692.5" y="197"/>
<ellipse cx="707.5" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M710.4688,218.6406 Q709.8906,218.9375 709.25,219.0781 Q708.6094,219.2344 707.9063,219.2344 Q705.4063,219.2344 704.0781,217.5938 Q702.7656,215.9375 702.7656,212.8125 Q702.7656,209.6875 704.0781,208.0313 Q705.4063,206.375 707.9063,206.375 Q708.6094,206.375 709.25,206.5313 Q709.9063,206.6875 710.4688,206.9844 L710.4688,209.7031 Q709.8438,209.125 709.25,208.8594 Q708.6563,208.5781 708.0313,208.5781 Q706.6875,208.5781 706,209.6563 Q705.3125,210.7188 705.3125,212.8125 Q705.3125,214.9063 706,215.9844 Q706.6875,217.0469 708.0313,217.0469 Q708.6563,217.0469 709.25,216.7813 Q709.8438,216.5 710.4688,215.9219 L710.4688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="26" x="721.5" y="217.1543">Text</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="34" x="755.5" y="194"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="32" x="756.5" y="206.1387">Color</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="693.5" x2="785.5" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="693.5" x2="785.5" y1="237" y2="237"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L48" target="_top" title="Window" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L48" xlink:show="new" xlink:title="Window" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1ot8575tod6ta)" height="99.2188" id="C_0001373544984027721472" style="stroke: #A80036; stroke-width: 1.5;" width="188" x="332.5" y="8"/>
<ellipse cx="398.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M401.7188,29.6406 Q401.1406,29.9375 400.5,30.0781 Q399.8594,30.2344 399.1563,30.2344 Q396.6563,30.2344 395.3281,28.5938 Q394.0156,26.9375 394.0156,23.8125 Q394.0156,20.6875 395.3281,19.0313 Q396.6563,17.375 399.1563,17.375 Q399.8594,17.375 400.5,17.5313 Q401.1563,17.6875 401.7188,17.9844 L401.7188,20.7031 Q401.0938,20.125 400.5,19.8594 Q399.9063,19.5781 399.2813,19.5781 Q397.9375,19.5781 397.25,20.6563 Q396.5625,21.7188 396.5625,23.8125 Q396.5625,25.9063 397.25,26.9844 Q397.9375,28.0469 399.2813,28.0469 Q399.9063,28.0469 400.5,27.7813 Q401.0938,27.5 401.7188,26.9219 L401.7188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="47" x="419.25" y="28.1543">Window</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="333.5" x2="519.5" y1="40" y2="40"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L43" target="_top" title="Weight" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L43" xlink:show="new" xlink:title="Weight" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ftwm5ynga2vv)" height="60.8047" id="C_0002049455532387561338" style="stroke: #A80036; stroke-width: 1.5;" width="109" x="1166" y="194.5"/>
<ellipse cx="1191.35" cy="210.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1194.3188,216.1406 Q1193.7406,216.4375 1193.1,216.5781 Q1192.4594,216.7344 1191.7563,216.7344 Q1189.2563,216.7344 1187.9281,215.0938 Q1186.6156,213.4375 1186.6156,210.3125 Q1186.6156,207.1875 1187.9281,205.5313 Q1189.2563,203.875 1191.7563,203.875 Q1192.4594,203.875 1193.1,204.0313 Q1193.7563,204.1875 1194.3188,204.4844 L1194.3188,207.2031 Q1193.6938,206.625 1193.1,206.3594 Q1192.5063,206.0781 1191.8813,206.0781 Q1190.5375,206.0781 1189.85,207.1563 Q1189.1625,208.2188 1189.1625,210.3125 Q1189.1625,212.4063 1189.85,213.4844 Q1190.5375,214.5469 1191.8813,214.5469 Q1192.5063,214.5469 1193.1,214.2813 Q1193.6938,214 1194.3188,213.4219 L1194.3188,216.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="43" x="1207.65" y="214.6543">Weight</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="1269" y="191.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="1270" y="203.6387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1167" x2="1274" y1="226.5" y2="226.5"/>
<ellipse cx="1177" cy="237.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="83" x="1186" y="240.7104">display() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1167" x2="1274" y1="247.3047" y2="247.3047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L49" target="_top" title="border" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L49" xlink:show="new" xlink:title="border" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="338.5" y="46"/>
<ellipse cx="343.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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L15" target="_top" title="Line" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L15" xlink:show="new" xlink:title="Line" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ftwm5ynga2vv)" height="48" id="C_0002082936326417164202" style="stroke: #A80036; stroke-width: 1.5;" width="141" x="134" y="201"/>
<ellipse cx="149" cy="217" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M151.9688,222.6406 Q151.3906,222.9375 150.75,223.0781 Q150.1094,223.2344 149.4063,223.2344 Q146.9063,223.2344 145.5781,221.5938 Q144.2656,219.9375 144.2656,216.8125 Q144.2656,213.6875 145.5781,212.0313 Q146.9063,210.375 149.4063,210.375 Q150.1094,210.375 150.75,210.5313 Q151.4063,210.6875 151.9688,210.9844 L151.9688,213.7031 Q151.3438,213.125 150.75,212.8594 Q150.1563,212.5781 149.5313,212.5781 Q148.1875,212.5781 147.5,213.6563 Q146.8125,214.7188 146.8125,216.8125 Q146.8125,218.9063 147.5,219.9844 Q148.1875,221.0469 149.5313,221.0469 Q150.1563,221.0469 150.75,220.7813 Q151.3438,220.5 151.9688,219.9219 L151.9688,222.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="25" x="163" y="221.1543">Line</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="82" x="196" y="198"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="80" x="197" y="210.1387">Color,Weight</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="135" x2="274" y1="233" y2="233"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="135" x2="274" y1="241" y2="241"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L49" target="_top" title="border" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L49" xlink:show="new" xlink:title="border" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="162" x="352.5" y="54.2104">border : Line&lt;Color,Weight&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L15" target="_top" title="Line" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L15" xlink:show="new" xlink:title="Line" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ftwm5ynga2vv)" height="48" id="C_0000675132943535054947" style="stroke: #A80036; stroke-width: 1.5;" width="93" x="6" y="201"/>
<ellipse cx="21" cy="217" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,222.6406 Q23.3906,222.9375 22.75,223.0781 Q22.1094,223.2344 21.4063,223.2344 Q18.9063,223.2344 17.5781,221.5938 Q16.2656,219.9375 16.2656,216.8125 Q16.2656,213.6875 17.5781,212.0313 Q18.9063,210.375 21.4063,210.375 Q22.1094,210.375 22.75,210.5313 Q23.4063,210.6875 23.9688,210.9844 L23.9688,213.7031 Q23.3438,213.125 22.75,212.8594 Q22.1563,212.5781 21.5313,212.5781 Q20.1875,212.5781 19.5,213.6563 Q18.8125,214.7188 18.8125,216.8125 Q18.8125,218.9063 19.5,219.9844 Q20.1875,221.0469 21.5313,221.0469 Q22.1563,221.0469 22.75,220.7813 Q23.3438,220.5 23.9688,219.9219 L23.9688,222.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="25" x="35" y="221.1543">Line</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="34" x="68" y="198"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="32" x="69" y="210.1387">Color</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="98" y1="233" y2="233"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="98" y1="241" y2="241"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L50" target="_top" title="divider" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L50" xlink:show="new" xlink:title="divider" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="338.5" y="58.8047"/>
<ellipse cx="343.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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L25" target="_top" title="Text" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L25" xlink:show="new" xlink:title="Text" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ftwm5ynga2vv)" height="48" id="C_0001678874302644303776" style="stroke: #A80036; stroke-width: 1.5;" width="142" x="575.5" y="201"/>
<ellipse cx="590.5" cy="217" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M593.4688,222.6406 Q592.8906,222.9375 592.25,223.0781 Q591.6094,223.2344 590.9063,223.2344 Q588.4063,223.2344 587.0781,221.5938 Q585.7656,219.9375 585.7656,216.8125 Q585.7656,213.6875 587.0781,212.0313 Q588.4063,210.375 590.9063,210.375 Q591.6094,210.375 592.25,210.5313 Q592.9063,210.6875 593.4688,210.9844 L593.4688,213.7031 Q592.8438,213.125 592.25,212.8594 Q591.6563,212.5781 591.0313,212.5781 Q589.6875,212.5781 589,213.6563 Q588.3125,214.7188 588.3125,216.8125 Q588.3125,218.9063 589,219.9844 Q589.6875,221.0469 591.0313,221.0469 Q591.6563,221.0469 592.25,220.7813 Q592.8438,220.5 593.4688,219.9219 L593.4688,222.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="26" x="604.5" y="221.1543">Text</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="82" x="638.5" y="198"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="80" x="639.5" y="210.1387">Color,Weight</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="576.5" x2="716.5" y1="233" y2="233"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="576.5" x2="716.5" y1="241" y2="241"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L50" target="_top" title="divider" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L50" xlink:show="new" xlink:title="divider" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="121" x="352.5" y="67.0151">divider : Line&lt;Color&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L25" target="_top" title="Text" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L25" xlink:show="new" xlink:title="Text" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ftwm5ynga2vv)" height="48" id="C_0001887786688778664182" style="stroke: #A80036; stroke-width: 1.5;" width="94" x="752.5" y="201"/>
<ellipse cx="767.5" cy="217" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M770.4688,222.6406 Q769.8906,222.9375 769.25,223.0781 Q768.6094,223.2344 767.9063,223.2344 Q765.4063,223.2344 764.0781,221.5938 Q762.7656,219.9375 762.7656,216.8125 Q762.7656,213.6875 764.0781,212.0313 Q765.4063,210.375 767.9063,210.375 Q768.6094,210.375 769.25,210.5313 Q769.9063,210.6875 770.4688,210.9844 L770.4688,213.7031 Q769.8438,213.125 769.25,212.8594 Q768.6563,212.5781 768.0313,212.5781 Q766.6875,212.5781 766,213.6563 Q765.3125,214.7188 765.3125,216.8125 Q765.3125,218.9063 766,219.9844 Q766.6875,221.0469 768.0313,221.0469 Q768.6563,221.0469 769.25,220.7813 Q769.8438,220.5 770.4688,219.9219 L770.4688,222.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="26" x="781.5" y="221.1543">Text</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="34" x="815.5" y="198"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="32" x="816.5" y="210.1387">Color</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="753.5" x2="845.5" y1="233" y2="233"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="753.5" x2="845.5" y1="241" y2="241"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L51" target="_top" title="title" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L51" xlink:show="new" xlink:title="title" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="338.5" y="71.6094"/>
<ellipse cx="343.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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L48" target="_top" title="Window" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L48" xlink:show="new" xlink:title="Window" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ftwm5ynga2vv)" height="99.2188" id="C_0001373544984027721472" style="stroke: #A80036; stroke-width: 1.5;" width="188" x="366.5" y="8"/>
<ellipse cx="432.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M435.7188,29.6406 Q435.1406,29.9375 434.5,30.0781 Q433.8594,30.2344 433.1563,30.2344 Q430.6563,30.2344 429.3281,28.5938 Q428.0156,26.9375 428.0156,23.8125 Q428.0156,20.6875 429.3281,19.0313 Q430.6563,17.375 433.1563,17.375 Q433.8594,17.375 434.5,17.5313 Q435.1563,17.6875 435.7188,17.9844 L435.7188,20.7031 Q435.0938,20.125 434.5,19.8594 Q433.9063,19.5781 433.2813,19.5781 Q431.9375,19.5781 431.25,20.6563 Q430.5625,21.7188 430.5625,23.8125 Q430.5625,25.9063 431.25,26.9844 Q431.9375,28.0469 433.2813,28.0469 Q433.9063,28.0469 434.5,27.7813 Q435.0938,27.5 435.7188,26.9219 L435.7188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="47" x="453.25" y="28.1543">Window</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="367.5" x2="553.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="367.5" x2="553.5" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L51" target="_top" title="title" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L51" xlink:show="new" xlink:title="title" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="352.5" y="79.8198">title : Text&lt;Color,Weight&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L49" target="_top" title="border" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L49" xlink:show="new" xlink:title="border" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="372.5" y="54"/>
<ellipse cx="377.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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L52" target="_top" title="description" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L52" xlink:show="new" xlink:title="description" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="338.5" y="84.4141"/>
<ellipse cx="343.5" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L49" target="_top" title="border" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L49" xlink:show="new" xlink:title="border" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="162" x="386.5" y="62.2104">border : Line&lt;Color,Weight&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L52" target="_top" title="description" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00027/t00027.cc#L52" xlink:show="new" xlink:title="description" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="147" x="352.5" y="92.6245">description : Text&lt;Color&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L52" target="_top" title="description" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L52" xlink:show="new" xlink:title="description" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="372.5" y="66.8047"/>
<ellipse cx="377.5" cy="71.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="333.5" x2="519.5" y1="99.2188" y2="99.2188"/>
<path d="M324.08,269.3 C298.92,285.96 271.38,304.21 249.07,318.98 " fill="none" id="C_0001593092483959332221&lt;-C_0000142374082478337852" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="320.48,263.29,341.02,258.08,328.21,274.96,320.48,263.29" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M466.92,269.3 C492.08,285.96 519.62,304.21 541.93,318.98 " fill="none" id="C_0001593092483959332221&lt;-C_0001114634647721878603" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="462.79,274.96,449.98,258.08,470.52,263.29,462.79,274.96" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1040.04,106.64 C1027.93,133.8 1013.18,166.89 1002.74,190.29 " fill="none" id="C_0002049188825706164566&lt;-C_0001473536569433029444" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="1033.76,103.54,1048.29,88.12,1046.54,109.24,1033.76,103.54" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1082.96,106.64 C1095.07,133.8 1109.82,166.89 1120.26,190.29 " fill="none" id="C_0002049188825706164566&lt;-C_0002049455532387561338" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="1076.46,109.24,1074.71,88.12,1089.24,103.54,1076.46,109.24" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M204.5,245.2 C204.5,260.15 204.5,280.17 204.5,298.6 " fill="none" id="C_0002082936326417164202-&gt;C_0000142374082478337852" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="211.5,298.75,204.5,318.75,197.5,298.75,211.5,298.75" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M80.38,245.2 C100.84,262.23 129.2,285.83 153.65,306.18 " fill="none" id="C_0000675132943535054947-&gt;C_0000142374082478337852" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="158.13,300.8,169.03,318.98,149.18,311.57,158.13,300.8" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M586.5,245.2 C586.5,260.15 586.5,280.17 586.5,298.6 " fill="none" id="C_0001678874302644303776-&gt;C_0001114634647721878603" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="593.5,298.75,586.5,318.75,579.5,298.75,593.5,298.75" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M711.44,245.2 C690.84,262.23 662.3,285.83 637.69,306.18 " fill="none" id="C_0001887786688778664182-&gt;C_0001114634647721878603" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="642.08,311.63,622.21,318.98,633.16,300.84,642.08,311.63" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M348.87,114.98 C310.22,143.09 265.62,175.54 236.34,196.84 " fill="none" id="C_0001373544984027721472&lt;-C_0002082936326417164202" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="359.59,107.17,352.3851,107.4687,349.8897,114.2343,357.0946,113.9356,359.59,107.17" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="321.5" cy="146.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="42" x="328.5" y="150.0669">border</text>
<path d="M319.96,97.75 C259.47,120.99 182.82,152.07 116.5,184 C108.34,187.93 99.79,192.44 91.69,196.92 " fill="none" id="C_0001373544984027721472&lt;-C_0000675132943535054947" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="332.23,93.06,325.1971,91.4666,321.0214,97.3456,328.0542,98.939,332.23,93.06" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="223.5" cy="146.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="42" x="230.5" y="150.0669">divider</text>
<path d="M484.1,116.64 C511.59,144.39 542.93,176.02 563.62,196.9 " fill="none" id="C_0001373544984027721472&lt;-C_0001678874302644303776" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="474.94,107.39,476.3212,114.4676,483.3856,115.9148,482.0044,108.8372,474.94,107.39" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="527.5" cy="146.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="534.5" y="150.0669">title</text>
<path d="M532.2,110.9 C576.37,133.08 628.11,159.43 674.5,184 C682.25,188.11 690.47,192.57 698.36,196.91 " fill="none" id="C_0001373544984027721472&lt;-C_0001887786688778664182" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="520.55,105.06,524.1185,111.3263,531.2752,110.4424,527.7067,104.1761,520.55,105.06" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="620.5" cy="146.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="70" x="627.5" y="150.0669">description</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L52" target="_top" title="description" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L52" xlink:show="new" xlink:title="description" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="147" x="386.5" y="75.0151">description : Text&lt;Color&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L50" target="_top" title="divider" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L50" xlink:show="new" xlink:title="divider" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="372.5" y="79.6094"/>
<ellipse cx="377.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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L50" target="_top" title="divider" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L50" xlink:show="new" xlink:title="divider" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="121" x="386.5" y="87.8198">divider : Line&lt;Color&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L51" target="_top" title="title" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L51" xlink:show="new" xlink:title="title" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="372.5" y="92.4141"/>
<ellipse cx="377.5" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L51" target="_top" title="title" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00027/t00027.cc#L51" xlink:show="new" xlink:title="title" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="386.5" y="100.6245">title : Text&lt;Color,Weight&gt;</text>
</a>
<path d="M340.09,276.44 C311.19,293.5 279.87,311.99 254.63,326.9 " fill="none" id="C_0001593092483959332221&lt;-C_0000142374082478337852" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="336.91,270.18,357.69,266.04,344.03,282.24,336.91,270.18" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M510.91,276.44 C539.81,293.5 571.13,311.99 596.37,326.9 " fill="none" id="C_0001593092483959332221&lt;-C_0001114634647721878603" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="506.97,282.24,493.31,266.04,514.09,270.18,506.97,282.24" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1127.63,106.48 C1115.27,134.89 1100,169.98 1089.38,194.39 " fill="none" id="C_0002049188825706164566&lt;-C_0001473536569433029444" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="1121.23,103.64,1135.63,88.09,1134.07,109.22,1121.23,103.64" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1169.37,106.48 C1181.73,134.89 1197,169.98 1207.62,194.39 " fill="none" id="C_0002049188825706164566&lt;-C_0002049455532387561338" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="1162.93,109.22,1161.37,88.09,1175.77,103.64,1162.93,109.22" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M204.5,249.03 C204.5,265.02 204.5,286.94 204.5,306.81 " fill="none" id="C_0002082936326417164202-&gt;C_0000142374082478337852" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="211.5,306.82,204.5,326.82,197.5,306.82,211.5,306.82" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M79.32,249.03 C100.12,266.88 129.52,292.12 154.6,313.66 " fill="none" id="C_0000675132943535054947-&gt;C_0000142374082478337852" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="159.32,308.48,169.93,326.82,150.2,319.1,159.32,308.48" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M646.5,249.03 C646.5,265.02 646.5,286.94 646.5,306.81 " fill="none" id="C_0001678874302644303776-&gt;C_0001114634647721878603" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="653.5,306.82,646.5,326.82,639.5,306.82,653.5,306.82" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M772.5,249.03 C751.57,266.88 721.98,292.12 696.73,313.66 " fill="none" id="C_0001887786688778664182-&gt;C_0001114634647721878603" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="701.06,319.17,681.3,326.82,691.97,308.52,701.06,319.17" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M374.27,114.25 C328.47,143.86 274.65,178.65 240.08,201 " fill="none" id="C_0001373544984027721472&lt;-C_0002082936326417164202" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="385.42,107.04,378.2097,106.9346,375.3392,113.5497,382.5495,113.6551,385.42,107.04" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="338.5" cy="146.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="42" x="345.5" y="150.0669">border</text>
<path d="M353.7,91.06 C284.55,113.69 193.4,146.45 116.5,184 C106.49,188.89 96.07,194.94 86.62,200.84 " fill="none" id="C_0001373544984027721472&lt;-C_0000675132943535054947" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="366.35,86.96,359.4084,85.0071,354.9358,90.6637,361.8775,92.6166,366.35,86.96" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="224.5" cy="146.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="42" x="231.5" y="150.0669">divider</text>
<path d="M525.06,115.94 C557.91,145.18 596.01,179.08 620.65,201 " fill="none" id="C_0001373544984027721472&lt;-C_0001678874302644303776" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="515.05,107.04,516.8738,114.0167,524.0153,115.0165,522.1915,108.0398,515.05,107.04" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="571.5" cy="146.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="578.5" y="150.0669">title</text>
<path d="M566.91,103.61 C618.27,126.3 680.35,155.07 734.5,184 C744.2,189.18 754.44,195.21 763.86,200.99 " fill="none" id="C_0001373544984027721472&lt;-C_0001887786688778664182" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="554.77,98.28,558.648,104.3596,565.7514,103.1182,561.8734,97.0386,554.77,98.28" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="674.5" cy="146.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="70" x="681.5" y="150.0669">description</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -13,6 +13,12 @@ diagrams:
include:
namespaces:
- clanguml::t00028
plantuml:
after:
- >
note left of {{ alias("R") }}::ccc
Reference to C.
end note
```
## Source code
@@ -25,25 +31,21 @@ namespace clanguml {
namespace t00028 {
/// \uml{note[top] A class note.}
class A {
};
class A { };
/// \uml{note[] B class note.}
class B {
};
class B { };
///
/// @uml{note:t00028_class[bottom] C class note.}
/// This is class C.
class C {
};
class C { };
/// \uml{note
/// D
/// class
/// note.}
class D {
};
class D { };
/// \uml{note E template class note.}
template <typename T> class E {
@@ -51,8 +53,7 @@ template <typename T> class E {
};
/// \uml{note:other_diagram[left] G class note.}
class G {
};
class G { };
/// @uml{note[ bottom ] F enum note.}
enum class F { one, two, three };
@@ -64,8 +65,10 @@ class R {
{
}
/// \uml{note[left] R contains an instance of A.}
A aaa;
/// \uml{note:other_diagram[right] R contains an pointer to B.}
B *bbb;
C &ccc;
@@ -83,3 +86,402 @@ class R {
```
## Generated UML diagrams
![t00028_class](./t00028_class.svg "PlantUML note decorator test case")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"comment": {
"formatted": "\\uml{note[top] A class note.}",
"raw": "/// \\uml{note[top] A class note.}"
},
"display_name": "clanguml::t00028::A",
"id": "1519850480962783588",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "A",
"namespace": "clanguml::t00028",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 8
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"comment": {
"formatted": "\\uml{note[] B class note.}",
"raw": "/// \\uml{note[] B class note.}"
},
"display_name": "clanguml::t00028::B",
"id": "1980597091567213070",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "B",
"namespace": "clanguml::t00028",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 11
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"comment": {
"formatted": "\n @uml{note:t00028_class[bottom] C class note.}\n This is class C.",
"raw": "///\n/// @uml{note:t00028_class[bottom] C class note.}\n/// This is class C."
},
"display_name": "clanguml::t00028::C",
"id": "984577258575112753",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "C",
"namespace": "clanguml::t00028",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 16
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"comment": {
"formatted": "\\uml{note\nD\nclass\nnote.}",
"raw": "/// \\uml{note\n/// D\n/// class\n/// note.}"
},
"display_name": "clanguml::t00028::D",
"id": "1263778658518784070",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "D",
"namespace": "clanguml::t00028",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 22
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"comment": {
"formatted": "\\uml{note E template class note.}",
"raw": "/// \\uml{note E template class note.}"
},
"display_name": "clanguml::t00028::E<T>",
"id": "1014136565447389473",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [
{
"access": "private",
"is_static": false,
"name": "param",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 26
},
"type": "T"
}
],
"methods": [],
"name": "E",
"namespace": "clanguml::t00028",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 25
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"comment": {
"formatted": "\\uml{note:other_diagram[left] G class note.}",
"raw": "/// \\uml{note:other_diagram[left] G class note.}"
},
"display_name": "clanguml::t00028::G",
"id": "764713728396057122",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "G",
"namespace": "clanguml::t00028",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 30
},
"template_parameters": [],
"type": "class"
},
{
"comment": {
"formatted": "@uml{note[ bottom ] F enum note.}",
"raw": "/// @uml{note[ bottom ] F enum note.}"
},
"constants": [
"one",
"two",
"three"
],
"display_name": "clanguml::t00028::F",
"id": "589227897266388677",
"is_nested": false,
"name": "F",
"namespace": "clanguml::t00028",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 33
},
"type": "enum"
},
{
"bases": [],
"display_name": "clanguml::t00028::E<int>",
"id": "1949673179441298667",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "E",
"namespace": "clanguml::t00028",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 25
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "int"
}
],
"type": "class"
},
{
"bases": [],
"comment": {
"formatted": "\\uml{note[right] R class note.}",
"raw": "/// \\uml{note[right] R class note.}"
},
"display_name": "clanguml::t00028::R",
"id": "1189142882239313116",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [
{
"access": "private",
"comment": {
"formatted": "\\uml{note[left] R contains an instance of A.}",
"raw": "/// \\uml{note[left] R contains an instance of A.}"
},
"is_static": false,
"name": "aaa",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 43
},
"type": "clanguml::t00028::A"
},
{
"access": "private",
"comment": {
"formatted": "\\uml{note:other_diagram[right] R contains an pointer to B.}",
"raw": "/// \\uml{note:other_diagram[right] R contains an pointer to B.}"
},
"is_static": false,
"name": "bbb",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 46
},
"type": "clanguml::t00028::B *"
},
{
"access": "private",
"is_static": false,
"name": "ccc",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 48
},
"type": "clanguml::t00028::C &"
},
{
"access": "private",
"is_static": false,
"name": "ddd",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 50
},
"type": "std::vector<std::shared_ptr<D>>"
},
{
"access": "private",
"is_static": false,
"name": "eee",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 52
},
"type": "E<int>"
},
{
"access": "private",
"is_static": false,
"name": "ggg",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 54
},
"type": "clanguml::t00028::G **"
}
],
"methods": [
{
"access": "private",
"is_const": false,
"is_consteval": false,
"is_constexpr": false,
"is_constructor": true,
"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": "R",
"parameters": [
{
"name": "c",
"type": "clanguml::t00028::C &"
}
],
"type": "void"
}
],
"name": "R",
"namespace": "clanguml::t00028",
"source_location": {
"file": "../../tests/t00028/t00028.cc",
"line": 36
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"schema_version": 1
},
"name": "t00028_class",
"relationships": [
{
"access": "public",
"destination": "1014136565447389473",
"source": "1949673179441298667",
"type": "instantiation"
},
{
"access": "public",
"destination": "984577258575112753",
"source": "1189142882239313116",
"type": "dependency"
},
{
"access": "private",
"destination": "1519850480962783588",
"label": "aaa",
"source": "1189142882239313116",
"type": "aggregation"
},
{
"access": "private",
"destination": "1980597091567213070",
"label": "bbb",
"source": "1189142882239313116",
"type": "association"
},
{
"access": "private",
"destination": "984577258575112753",
"label": "ccc",
"source": "1189142882239313116",
"type": "association"
},
{
"access": "private",
"destination": "1263778658518784070",
"label": "ddd",
"source": "1189142882239313116",
"type": "aggregation"
},
{
"access": "private",
"destination": "1949673179441298667",
"label": "eee",
"source": "1189142882239313116",
"type": "aggregation"
},
{
"access": "private",
"destination": "764713728396057122",
"label": "ggg",
"source": "1189142882239313116",
"type": "association"
}
],
"using_namespace": "clanguml::t00028"
}
```

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="410px" preserveAspectRatio="none" style="width:877px;height:410px;" version="1.1" viewBox="0 0 877 410" width="877px" 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="410px" preserveAspectRatio="none" style="width:1109px;height:410px;" version="1.1" viewBox="0 0 1109 410" width="1109px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1xjm1uzrz6ao9" width="300%" x="-1" y="-1">
<filter height="300%" id="f1tl61trgvrpli" 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,186 +9,192 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L8" target="_top" title="\uml{note[top] A class note.}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L8" xlink:show="new" xlink:title="\uml{note[top] A class note.}" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xjm1uzrz6ao9)" height="48" id="C_0001519850480962783588" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="95" y="226.5"/>
<ellipse cx="110" cy="242.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M112.9688,248.1406 Q112.3906,248.4375 111.75,248.5781 Q111.1094,248.7344 110.4063,248.7344 Q107.9063,248.7344 106.5781,247.0938 Q105.2656,245.4375 105.2656,242.3125 Q105.2656,239.1875 106.5781,237.5313 Q107.9063,235.875 110.4063,235.875 Q111.1094,235.875 111.75,236.0313 Q112.4063,236.1875 112.9688,236.4844 L112.9688,239.2031 Q112.3438,238.625 111.75,238.3594 Q111.1563,238.0781 110.5313,238.0781 Q109.1875,238.0781 108.5,239.1563 Q107.8125,240.2188 107.8125,242.3125 Q107.8125,244.4063 108.5,245.4844 Q109.1875,246.5469 110.5313,246.5469 Q111.1563,246.5469 111.75,246.2813 Q112.3438,246 112.9688,245.4219 L112.9688,248.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="124" y="246.6543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="96" x2="134" y1="258.5" y2="258.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="96" x2="134" y1="266.5" y2="266.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L8" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L8" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tl61trgvrpli)" height="48" id="C_0001519850480962783588" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="156.5" y="226.5"/>
<ellipse cx="171.5" cy="242.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M174.4688,248.1406 Q173.8906,248.4375 173.25,248.5781 Q172.6094,248.7344 171.9063,248.7344 Q169.4063,248.7344 168.0781,247.0938 Q166.7656,245.4375 166.7656,242.3125 Q166.7656,239.1875 168.0781,237.5313 Q169.4063,235.875 171.9063,235.875 Q172.6094,235.875 173.25,236.0313 Q173.9063,236.1875 174.4688,236.4844 L174.4688,239.2031 Q173.8438,238.625 173.25,238.3594 Q172.6563,238.0781 172.0313,238.0781 Q170.6875,238.0781 170,239.1563 Q169.3125,240.2188 169.3125,242.3125 Q169.3125,244.4063 170,245.4844 Q170.6875,246.5469 172.0313,246.5469 Q172.6563,246.5469 173.25,246.2813 Q173.8438,246 174.4688,245.4219 L174.4688,248.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="185.5" y="246.6543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="157.5" x2="195.5" y1="258.5" y2="258.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="157.5" x2="195.5" y1="266.5" y2="266.5"/>
</a>
<path d="M12.5,64.5 L12.5,89.6328 L115.5,89.6328 L115.5,74.5 L105.5,64.5 L12.5,64.5 " fill="#FBFB77" filter="url(#f1xjm1uzrz6ao9)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M105.5,64.5 L105.5,74.5 L115.5,74.5 L105.5,64.5 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="82" x="18.5" y="81.5669">A class note.</text>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L12" target="_top" title="\uml{note[] B class note.}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L12" xlink:show="new" xlink:title="\uml{note[] B class note.}" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xjm1uzrz6ao9)" height="48" id="C_0001980597091567213070" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="684" y="226.5"/>
<ellipse cx="699" cy="242.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M701.9688,248.1406 Q701.3906,248.4375 700.75,248.5781 Q700.1094,248.7344 699.4063,248.7344 Q696.9063,248.7344 695.5781,247.0938 Q694.2656,245.4375 694.2656,242.3125 Q694.2656,239.1875 695.5781,237.5313 Q696.9063,235.875 699.4063,235.875 Q700.1094,235.875 700.75,236.0313 Q701.4063,236.1875 701.9688,236.4844 L701.9688,239.2031 Q701.3438,238.625 700.75,238.3594 Q700.1563,238.0781 699.5313,238.0781 Q698.1875,238.0781 697.5,239.1563 Q696.8125,240.2188 696.8125,242.3125 Q696.8125,244.4063 697.5,245.4844 Q698.1875,246.5469 699.5313,246.5469 Q700.1563,246.5469 700.75,246.2813 Q701.3438,246 701.9688,245.4219 L701.9688,248.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="713" y="246.6543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="685" x2="723" y1="258.5" y2="258.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="685" x2="723" y1="266.5" y2="266.5"/>
<path d="M6,64.5 L6,89.6328 A0,0 0 0 0 6,89.6328 L61.49,89.6328 L160.49,226.42 L69.49,89.6328 L109,89.6328 A0,0 0 0 0 109,89.6328 L109,74.5 L99,64.5 L6,64.5 A0,0 0 0 0 6,64.5 " fill="#FBFB77" filter="url(#f1tl61trgvrpli)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M99,64.5 L99,74.5 L109,74.5 L99,64.5 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="82" x="12" y="81.5669">A class note.</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L11" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L11" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tl61trgvrpli)" height="48" id="C_0001980597091567213070" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="750.5" y="226.5"/>
<ellipse cx="765.5" cy="242.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M768.4688,248.1406 Q767.8906,248.4375 767.25,248.5781 Q766.6094,248.7344 765.9063,248.7344 Q763.4063,248.7344 762.0781,247.0938 Q760.7656,245.4375 760.7656,242.3125 Q760.7656,239.1875 762.0781,237.5313 Q763.4063,235.875 765.9063,235.875 Q766.6094,235.875 767.25,236.0313 Q767.9063,236.1875 768.4688,236.4844 L768.4688,239.2031 Q767.8438,238.625 767.25,238.3594 Q766.6563,238.0781 766.0313,238.0781 Q764.6875,238.0781 764,239.1563 Q763.3125,240.2188 763.3125,242.3125 Q763.3125,244.4063 764,245.4844 Q764.6875,246.5469 766.0313,246.5469 Q766.6563,246.5469 767.25,246.2813 Q767.8438,246 768.4688,245.4219 L768.4688,248.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="779.5" y="246.6543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="751.5" x2="789.5" y1="258.5" y2="258.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="751.5" x2="789.5" y1="266.5" y2="266.5"/>
</a>
<path d="M545.5,238 L545.5,263.1328 A0,0 0 0 0 545.5,263.1328 L648.5,263.1328 A0,0 0 0 0 648.5,263.1328 L648.5,256 L683.74,250.5 L648.5,248 L648.5,248 L638.5,238 L545.5,238 A0,0 0 0 0 545.5,238 " fill="#FBFB77" filter="url(#f1xjm1uzrz6ao9)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M638.5,238 L638.5,248 L648.5,248 L638.5,238 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="82" x="551.5" y="255.0669">B class note.</text>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L18" target="_top" title="@uml{note:t00028_class[bottom] C class note.} This is class C." xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L18" xlink:show="new" xlink:title="@uml{note:t00028_class[bottom] C class note.} This is class C." xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xjm1uzrz6ao9)" height="48" id="C_0000984577258575112753" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="247" y="226.5"/>
<ellipse cx="262" cy="242.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M264.9688,248.1406 Q264.3906,248.4375 263.75,248.5781 Q263.1094,248.7344 262.4063,248.7344 Q259.9063,248.7344 258.5781,247.0938 Q257.2656,245.4375 257.2656,242.3125 Q257.2656,239.1875 258.5781,237.5313 Q259.9063,235.875 262.4063,235.875 Q263.1094,235.875 263.75,236.0313 Q264.4063,236.1875 264.9688,236.4844 L264.9688,239.2031 Q264.3438,238.625 263.75,238.3594 Q263.1563,238.0781 262.5313,238.0781 Q261.1875,238.0781 260.5,239.1563 Q259.8125,240.2188 259.8125,242.3125 Q259.8125,244.4063 260.5,245.4844 Q261.1875,246.5469 262.5313,246.5469 Q263.1563,246.5469 263.75,246.2813 Q264.3438,246 264.9688,245.4219 L264.9688,248.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="276" y="246.6543">C</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="248" x2="286" y1="258.5" y2="258.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="248" x2="286" y1="266.5" y2="266.5"/>
<path d="M612,238 L612,263.1328 A0,0 0 0 0 612,263.1328 L715,263.1328 A0,0 0 0 0 715,263.1328 L715,256 L750.24,250.5 L715,248 L715,248 L705,238 L612,238 A0,0 0 0 0 612,238 " fill="#FBFB77" filter="url(#f1tl61trgvrpli)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M705,238 L705,248 L715,248 L705,238 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="82" x="618" y="255.0669">B class note.</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L16" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L16" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tl61trgvrpli)" height="48" id="C_0000984577258575112753" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="309.5" y="226.5"/>
<ellipse cx="324.5" cy="242.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M327.4688,248.1406 Q326.8906,248.4375 326.25,248.5781 Q325.6094,248.7344 324.9063,248.7344 Q322.4063,248.7344 321.0781,247.0938 Q319.7656,245.4375 319.7656,242.3125 Q319.7656,239.1875 321.0781,237.5313 Q322.4063,235.875 324.9063,235.875 Q325.6094,235.875 326.25,236.0313 Q326.9063,236.1875 327.4688,236.4844 L327.4688,239.2031 Q326.8438,238.625 326.25,238.3594 Q325.6563,238.0781 325.0313,238.0781 Q323.6875,238.0781 323,239.1563 Q322.3125,240.2188 322.3125,242.3125 Q322.3125,244.4063 323,245.4844 Q323.6875,246.5469 325.0313,246.5469 Q325.6563,246.5469 326.25,246.2813 Q326.8438,246 327.4688,245.4219 L327.4688,248.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="338.5" y="246.6543">C</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="310.5" x2="348.5" y1="258.5" y2="258.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="310.5" x2="348.5" y1="266.5" y2="266.5"/>
</a>
<path d="M158.5,357 L158.5,382.1328 A0,0 0 0 0 158.5,382.1328 L261.5,382.1328 A0,0 0 0 0 261.5,382.1328 L261.5,367 L251.5,357 L219.68,357 L255.74,274.62 L211.68,357 L158.5,357 A0,0 0 0 0 158.5,357 " fill="#FBFB77" filter="url(#f1xjm1uzrz6ao9)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M251.5,357 L251.5,367 L261.5,367 L251.5,357 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="82" x="164.5" y="374.0669">C class note.</text>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L25" target="_top" title="\uml{note D class note.}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L25" xlink:show="new" xlink:title="\uml{note D class note.}" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xjm1uzrz6ao9)" height="48" id="C_0001263778658518784070" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="170.5" y="226.5"/>
<ellipse cx="185.5" cy="242.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M188.4688,248.1406 Q187.8906,248.4375 187.25,248.5781 Q186.6094,248.7344 185.9063,248.7344 Q183.4063,248.7344 182.0781,247.0938 Q180.7656,245.4375 180.7656,242.3125 Q180.7656,239.1875 182.0781,237.5313 Q183.4063,235.875 185.9063,235.875 Q186.6094,235.875 187.25,236.0313 Q187.9063,236.1875 188.4688,236.4844 L188.4688,239.2031 Q187.8438,238.625 187.25,238.3594 Q186.6563,238.0781 186.0313,238.0781 Q184.6875,238.0781 184,239.1563 Q183.3125,240.2188 183.3125,242.3125 Q183.3125,244.4063 184,245.4844 Q184.6875,246.5469 186.0313,246.5469 Q186.6563,246.5469 187.25,246.2813 Q187.8438,246 188.4688,245.4219 L188.4688,248.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="199.5" y="246.6543">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="171.5" x2="210.5" y1="258.5" y2="258.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="171.5" x2="210.5" y1="266.5" y2="266.5"/>
<path d="M222,357 L222,382.1328 A0,0 0 0 0 222,382.1328 L325,382.1328 A0,0 0 0 0 325,382.1328 L325,367 L315,357 L283.08,357 L318.44,274.62 L275.08,357 L222,357 A0,0 0 0 0 222,357 " fill="#FBFB77" filter="url(#f1tl61trgvrpli)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M315,357 L315,367 L325,367 L315,357 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="82" x="228" y="374.0669">C class note.</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L22" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L22" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tl61trgvrpli)" height="48" id="C_0001263778658518784070" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="915" y="226.5"/>
<ellipse cx="930" cy="242.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M932.9688,248.1406 Q932.3906,248.4375 931.75,248.5781 Q931.1094,248.7344 930.4063,248.7344 Q927.9063,248.7344 926.5781,247.0938 Q925.2656,245.4375 925.2656,242.3125 Q925.2656,239.1875 926.5781,237.5313 Q927.9063,235.875 930.4063,235.875 Q931.1094,235.875 931.75,236.0313 Q932.4063,236.1875 932.9688,236.4844 L932.9688,239.2031 Q932.3438,238.625 931.75,238.3594 Q931.1563,238.0781 930.5313,238.0781 Q929.1875,238.0781 928.5,239.1563 Q927.8125,240.2188 927.8125,242.3125 Q927.8125,244.4063 928.5,245.4844 Q929.1875,246.5469 930.5313,246.5469 Q931.1563,246.5469 931.75,246.2813 Q932.3438,246 932.9688,245.4219 L932.9688,248.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="944" y="246.6543">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="916" x2="955" y1="258.5" y2="258.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="916" x2="955" y1="266.5" y2="266.5"/>
</a>
<path d="M6,223 L6,278.3984 L60,278.3984 L60,233 L50,223 L6,223 " fill="#FBFB77" filter="url(#f1xjm1uzrz6ao9)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M50,223 L50,233 L60,233 L50,223 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="10" x="12" y="240.0669">D</text>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="12" y="255.1997">class</text>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="33" x="12" y="270.3325">note.</text>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L29" target="_top" title="\uml{note E template class note.}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L29" xlink:show="new" xlink:title="\uml{note E template class note.}" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xjm1uzrz6ao9)" height="60.8047" id="C_0001014136565447389473" style="stroke: #A80036; stroke-width: 1.5;" width="82" x="496" y="339"/>
<ellipse cx="524.95" cy="355" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M527.9188,360.6406 Q527.3406,360.9375 526.7,361.0781 Q526.0594,361.2344 525.3563,361.2344 Q522.8563,361.2344 521.5281,359.5938 Q520.2156,357.9375 520.2156,354.8125 Q520.2156,351.6875 521.5281,350.0313 Q522.8563,348.375 525.3563,348.375 Q526.0594,348.375 526.7,348.5313 Q527.3563,348.6875 527.9188,348.9844 L527.9188,351.7031 Q527.2938,351.125 526.7,350.8594 Q526.1063,350.5781 525.4813,350.5781 Q524.1375,350.5781 523.45,351.6563 Q522.7625,352.7188 522.7625,354.8125 Q522.7625,356.9063 523.45,357.9844 Q524.1375,359.0469 525.4813,359.0469 Q526.1063,359.0469 526.7,358.7813 Q527.2938,358.5 527.9188,357.9219 L527.9188,360.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="542.05" y="359.1543">E</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="572" y="336"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="573" y="348.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="497" x2="577" y1="371" y2="371"/>
<path d="M825.5,223 L825.5,278.3984 A0,0 0 0 0 825.5,278.3984 L879.5,278.3984 A0,0 0 0 0 879.5,278.3984 L879.5,254.5 L914.59,250.5 L879.5,246.5 L879.5,233 L869.5,223 L825.5,223 A0,0 0 0 0 825.5,223 " fill="#FBFB77" filter="url(#f1tl61trgvrpli)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M869.5,223 L869.5,233 L879.5,233 L869.5,223 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="10" x="831.5" y="240.0669">D</text>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="831.5" y="255.1997">class</text>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="33" x="831.5" y="270.3325">note.</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L25" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L25" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tl61trgvrpli)" height="60.8047" id="C_0001014136565447389473" style="stroke: #A80036; stroke-width: 1.5;" width="82" x="559.5" y="339"/>
<ellipse cx="588.45" cy="355" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M591.4188,360.6406 Q590.8406,360.9375 590.2,361.0781 Q589.5594,361.2344 588.8563,361.2344 Q586.3563,361.2344 585.0281,359.5938 Q583.7156,357.9375 583.7156,354.8125 Q583.7156,351.6875 585.0281,350.0313 Q586.3563,348.375 588.8563,348.375 Q589.5594,348.375 590.2,348.5313 Q590.8563,348.6875 591.4188,348.9844 L591.4188,351.7031 Q590.7938,351.125 590.2,350.8594 Q589.6063,350.5781 588.9813,350.5781 Q587.6375,350.5781 586.95,351.6563 Q586.2625,352.7188 586.2625,354.8125 Q586.2625,356.9063 586.95,357.9844 Q587.6375,359.0469 588.9813,359.0469 Q589.6063,359.0469 590.2,358.7813 Q590.7938,358.5 591.4188,357.9219 L591.4188,360.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="605.55" y="359.1543">E</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="635.5" y="336"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="636.5" y="348.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="560.5" x2="640.5" y1="371" y2="371"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="560.5" x2="640.5" y1="379" y2="379"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L30" target="_top" title="param" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L30" xlink:show="new" xlink:title="param" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="502" y="377"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="504" y="379"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L26" target="_top" title="param" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L26" xlink:show="new" xlink:title="param" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="565.5" y="385"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="567.5" y="387"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L30" target="_top" title="param" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L30" xlink:show="new" xlink:title="param" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="56" x="516" y="385.2104">param : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L26" target="_top" title="param" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L26" xlink:show="new" xlink:title="param" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="56" x="579.5" y="393.2104">param : T</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="497" x2="577" y1="391.8047" y2="391.8047"/>
<path d="M297,357 L297,382.1328 A0,0 0 0 0 297,382.1328 L461,382.1328 A0,0 0 0 0 461,382.1328 L461,375 L495.78,369.5 L461,367 L461,367 L451,357 L297,357 A0,0 0 0 0 297,357 " fill="#FBFB77" filter="url(#f1xjm1uzrz6ao9)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M451,357 L451,367 L461,367 L451,357 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="143" x="303" y="374.0669">E template class note.</text>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L34" target="_top" title="\uml{note:other_diagram[left] G class note.}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L34" xlink:show="new" xlink:title="\uml{note:other_diagram[left] G class note.}" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xjm1uzrz6ao9)" height="48" id="C_0000764713728396057122" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="373.5" y="226.5"/>
<ellipse cx="388.5" cy="242.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M391.4688,248.1406 Q390.8906,248.4375 390.25,248.5781 Q389.6094,248.7344 388.9063,248.7344 Q386.4063,248.7344 385.0781,247.0938 Q383.7656,245.4375 383.7656,242.3125 Q383.7656,239.1875 385.0781,237.5313 Q386.4063,235.875 388.9063,235.875 Q389.6094,235.875 390.25,236.0313 Q390.9063,236.1875 391.4688,236.4844 L391.4688,239.2031 Q390.8438,238.625 390.25,238.3594 Q389.6563,238.0781 389.0313,238.0781 Q387.6875,238.0781 387,239.1563 Q386.3125,240.2188 386.3125,242.3125 Q386.3125,244.4063 387,245.4844 Q387.6875,246.5469 389.0313,246.5469 Q389.6563,246.5469 390.25,246.2813 Q390.8438,246 391.4688,245.4219 L391.4688,248.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="402.5" y="246.6543">G</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="374.5" x2="413.5" y1="258.5" y2="258.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="374.5" x2="413.5" y1="266.5" y2="266.5"/>
<path d="M360.5,357 L360.5,382.1328 A0,0 0 0 0 360.5,382.1328 L524.5,382.1328 A0,0 0 0 0 524.5,382.1328 L524.5,375 L559.28,369.5 L524.5,367 L524.5,367 L514.5,357 L360.5,357 A0,0 0 0 0 360.5,357 " fill="#FBFB77" filter="url(#f1tl61trgvrpli)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M514.5,357 L514.5,367 L524.5,367 L514.5,357 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="143" x="366.5" y="374.0669">E template class note.</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L30" target="_top" title="G" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L30" xlink:show="new" xlink:title="G" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tl61trgvrpli)" height="48" id="C_0000764713728396057122" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="440" y="226.5"/>
<ellipse cx="455" cy="242.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M457.9688,248.1406 Q457.3906,248.4375 456.75,248.5781 Q456.1094,248.7344 455.4063,248.7344 Q452.9063,248.7344 451.5781,247.0938 Q450.2656,245.4375 450.2656,242.3125 Q450.2656,239.1875 451.5781,237.5313 Q452.9063,235.875 455.4063,235.875 Q456.1094,235.875 456.75,236.0313 Q457.4063,236.1875 457.9688,236.4844 L457.9688,239.2031 Q457.3438,238.625 456.75,238.3594 Q456.1563,238.0781 455.5313,238.0781 Q454.1875,238.0781 453.5,239.1563 Q452.8125,240.2188 452.8125,242.3125 Q452.8125,244.4063 453.5,245.4844 Q454.1875,246.5469 455.5313,246.5469 Q456.1563,246.5469 456.75,246.2813 Q457.3438,246 457.9688,245.4219 L457.9688,248.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="469" y="246.6543">G</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="441" x2="480" y1="258.5" y2="258.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="441" x2="480" y1="266.5" y2="266.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L38" target="_top" title="@uml{note[ bottom ] F enum note.}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L38" xlink:show="new" xlink:title="@uml{note[ bottom ] F enum note.}" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xjm1uzrz6ao9)" height="86.4141" id="C_0000589227897266388677" style="stroke: #A80036; stroke-width: 1.5;" width="42" x="791" y="34"/>
<ellipse cx="807.35" cy="50" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M811.4594,56 L803.7406,56 L803.7406,43.6094 L811.4594,43.6094 L811.4594,45.7656 L806.1938,45.7656 L806.1938,48.4375 L810.9594,48.4375 L810.9594,50.5938 L806.1938,50.5938 L806.1938,53.8438 L811.4594,53.8438 L811.4594,56 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="7" x="821.65" y="54.1543">F</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="792" x2="832" y1="66" y2="66"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="21" x="797" y="80.2104">one</text>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="797" y="93.0151">two</text>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="30" x="797" y="105.8198">three</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="792" x2="832" y1="112.4141" y2="112.4141"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L33" target="_top" title="F" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L33" xlink:show="new" xlink:title="F" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tl61trgvrpli)" height="86.4141" id="C_0000589227897266388677" style="stroke: #A80036; stroke-width: 1.5;" width="42" x="1023.5" y="34"/>
<ellipse cx="1039.85" cy="50" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1043.9594,56 L1036.2406,56 L1036.2406,43.6094 L1043.9594,43.6094 L1043.9594,45.7656 L1038.6938,45.7656 L1038.6938,48.4375 L1043.4594,48.4375 L1043.4594,50.5938 L1038.6938,50.5938 L1038.6938,53.8438 L1043.9594,53.8438 L1043.9594,56 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="7" x="1054.15" y="54.1543">F</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1024.5" x2="1064.5" y1="66" y2="66"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="21" x="1029.5" y="80.2104">one</text>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1029.5" y="93.0151">two</text>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="30" x="1029.5" y="105.8198">three</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1024.5" x2="1064.5" y1="112.4141" y2="112.4141"/>
</a>
<path d="M759,238 L759,263.1328 A0,0 0 0 0 759,263.1328 L865,263.1328 A0,0 0 0 0 865,263.1328 L865,248 L855,238 L816,238 L812,120.39 L808,238 L759,238 A0,0 0 0 0 759,238 " fill="#FBFB77" filter="url(#f1xjm1uzrz6ao9)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M855,238 L855,248 L865,248 L855,238 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="765" y="255.0669">F enum note.</text>
<rect fill="#FEFECE" filter="url(#f1xjm1uzrz6ao9)" height="48" id="C_0001949673179441298667" style="stroke: #A80036; stroke-width: 1.5;" width="60" x="450" y="226.5"/>
<ellipse cx="465" cy="242.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M467.9688,248.1406 Q467.3906,248.4375 466.75,248.5781 Q466.1094,248.7344 465.4063,248.7344 Q462.9063,248.7344 461.5781,247.0938 Q460.2656,245.4375 460.2656,242.3125 Q460.2656,239.1875 461.5781,237.5313 Q462.9063,235.875 465.4063,235.875 Q466.1094,235.875 466.75,236.0313 Q467.4063,236.1875 467.9688,236.4844 L467.9688,239.2031 Q467.3438,238.625 466.75,238.3594 Q466.1563,238.0781 465.5313,238.0781 Q464.1875,238.0781 463.5,239.1563 Q462.8125,240.2188 462.8125,242.3125 Q462.8125,244.4063 463.5,245.4844 Q464.1875,246.5469 465.5313,246.5469 Q466.1563,246.5469 466.75,246.2813 Q467.3438,246 467.9688,245.4219 L467.9688,248.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="479" y="246.6543">E</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="18" x="495" y="223.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="16" x="496" y="235.6387">int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="451" x2="509" y1="258.5" y2="258.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="451" x2="509" y1="266.5" y2="266.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L41" target="_top" title="\uml{note[right] R class note.}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L41" xlink:show="new" xlink:title="\uml{note[right] R class note.}" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1xjm1uzrz6ao9)" height="137.6328" id="C_0001189142882239313116" style="stroke: #A80036; stroke-width: 1.5;" width="252" x="193" y="8"/>
<ellipse cx="310.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M313.7188,29.6406 Q313.1406,29.9375 312.5,30.0781 Q311.8594,30.2344 311.1563,30.2344 Q308.6563,30.2344 307.3281,28.5938 Q306.0156,26.9375 306.0156,23.8125 Q306.0156,20.6875 307.3281,19.0313 Q308.6563,17.375 311.1563,17.375 Q311.8594,17.375 312.5,17.5313 Q313.1563,17.6875 313.7188,17.9844 L313.7188,20.7031 Q313.0938,20.125 312.5,19.8594 Q311.9063,19.5781 311.2813,19.5781 Q309.9375,19.5781 309.25,20.6563 Q308.5625,21.7188 308.5625,23.8125 Q308.5625,25.9063 309.25,26.9844 Q309.9375,28.0469 311.2813,28.0469 Q311.9063,28.0469 312.5,27.7813 Q313.0938,27.5 313.7188,26.9219 L313.7188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="331.25" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="194" x2="444" y1="40" y2="40"/>
<path d="M991.5,238 L991.5,263.1328 A0,0 0 0 0 991.5,263.1328 L1097.5,263.1328 A0,0 0 0 0 1097.5,263.1328 L1097.5,248 L1087.5,238 L1048.5,238 L1044.5,120.39 L1040.5,238 L991.5,238 A0,0 0 0 0 991.5,238 " fill="#FBFB77" filter="url(#f1tl61trgvrpli)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M1087.5,238 L1087.5,248 L1097.5,248 L1087.5,238 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="997.5" y="255.0669">F enum note.</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L25" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L25" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tl61trgvrpli)" height="48" id="C_0001949673179441298667" style="stroke: #A80036; stroke-width: 1.5;" width="60" x="516.5" y="226.5"/>
<ellipse cx="531.5" cy="242.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M534.4688,248.1406 Q533.8906,248.4375 533.25,248.5781 Q532.6094,248.7344 531.9063,248.7344 Q529.4063,248.7344 528.0781,247.0938 Q526.7656,245.4375 526.7656,242.3125 Q526.7656,239.1875 528.0781,237.5313 Q529.4063,235.875 531.9063,235.875 Q532.6094,235.875 533.25,236.0313 Q533.9063,236.1875 534.4688,236.4844 L534.4688,239.2031 Q533.8438,238.625 533.25,238.3594 Q532.6563,238.0781 532.0313,238.0781 Q530.6875,238.0781 530,239.1563 Q529.3125,240.2188 529.3125,242.3125 Q529.3125,244.4063 530,245.4844 Q530.6875,246.5469 532.0313,246.5469 Q532.6563,246.5469 533.25,246.2813 Q533.8438,246 534.4688,245.4219 L534.4688,248.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="545.5" y="246.6543">E</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="18" x="561.5" y="223.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="16" x="562.5" y="235.6387">int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="517.5" x2="575.5" y1="258.5" y2="258.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="517.5" x2="575.5" y1="266.5" y2="266.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L47" target="_top" title="aaa" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L47" xlink:show="new" xlink:title="aaa" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="199" y="46"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="201" y="48"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L36" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L36" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tl61trgvrpli)" height="137.6328" id="C_0001189142882239313116" style="stroke: #A80036; stroke-width: 1.5;" width="252" x="377.5" y="8"/>
<ellipse cx="495.25" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M498.2188,29.6406 Q497.6406,29.9375 497,30.0781 Q496.3594,30.2344 495.6563,30.2344 Q493.1563,30.2344 491.8281,28.5938 Q490.5156,26.9375 490.5156,23.8125 Q490.5156,20.6875 491.8281,19.0313 Q493.1563,17.375 495.6563,17.375 Q496.3594,17.375 497,17.5313 Q497.6563,17.6875 498.2188,17.9844 L498.2188,20.7031 Q497.5938,20.125 497,19.8594 Q496.4063,19.5781 495.7813,19.5781 Q494.4375,19.5781 493.75,20.6563 Q493.0625,21.7188 493.0625,23.8125 Q493.0625,25.9063 493.75,26.9844 Q494.4375,28.0469 495.7813,28.0469 Q496.4063,28.0469 497,27.7813 Q497.5938,27.5 498.2188,26.9219 L498.2188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="515.75" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="378.5" x2="628.5" y1="40" y2="40"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="385.5" y="48"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="82" x="397.5" y="54.2104">R(C &amp; c) : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="378.5" x2="628.5" y1="60.8047" y2="60.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L47" target="_top" title="aaa" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L47" xlink:show="new" xlink:title="aaa" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="40" x="213" y="54.2104">aaa : A</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L43" target="_top" title="aaa" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L43" xlink:show="new" xlink:title="aaa" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="383.5" y="66.8047"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="385.5" y="68.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L49" target="_top" title="bbb" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L49" xlink:show="new" xlink:title="bbb" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="199" y="58.8047"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="201" y="60.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L43" target="_top" title="aaa" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L43" xlink:show="new" xlink:title="aaa" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="40" x="397.5" y="75.0151">aaa : A</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L49" target="_top" title="bbb" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L49" xlink:show="new" xlink:title="bbb" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="51" x="213" y="67.0151">bbb : B *</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L46" target="_top" title="bbb" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L46" xlink:show="new" xlink:title="bbb" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="383.5" y="79.6094"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="385.5" y="81.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L51" target="_top" title="ccc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L51" xlink:show="new" xlink:title="ccc" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="199" y="71.6094"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="201" y="73.6094"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L46" target="_top" title="bbb" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L46" xlink:show="new" xlink:title="bbb" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="51" x="397.5" y="87.8198">bbb : B *</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L51" target="_top" title="ccc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L51" xlink:show="new" xlink:title="ccc" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="52" x="213" y="79.8198">ccc : C &amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L48" target="_top" title="ccc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L48" xlink:show="new" xlink:title="ccc" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="383.5" y="92.4141"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="385.5" y="94.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L53" target="_top" title="ddd" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L53" xlink:show="new" xlink:title="ddd" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="199" y="84.4141"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="201" y="86.4141"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L48" target="_top" title="ccc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L48" xlink:show="new" xlink:title="ccc" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="52" x="397.5" y="100.6245">ccc : C &amp;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L53" target="_top" title="ddd" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L53" xlink:show="new" xlink:title="ddd" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="226" x="213" y="92.6245">ddd : std::vector&lt;std::shared_ptr&lt;D&gt;&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L50" target="_top" title="ddd" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L50" xlink:show="new" xlink:title="ddd" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="383.5" y="105.2188"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="385.5" y="107.2188"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L55" target="_top" title="eee" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L55" xlink:show="new" xlink:title="eee" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="199" y="97.2188"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="201" y="99.2188"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L50" target="_top" title="ddd" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L50" xlink:show="new" xlink:title="ddd" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="226" x="397.5" y="113.4292">ddd : std::vector&lt;std::shared_ptr&lt;D&gt;&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L55" target="_top" title="eee" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L55" xlink:show="new" xlink:title="eee" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="72" x="213" y="105.4292">eee : E&lt;int&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L52" target="_top" title="eee" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L52" xlink:show="new" xlink:title="eee" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="383.5" y="118.0234"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="385.5" y="120.0234"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L57" target="_top" title="ggg" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L57" xlink:show="new" xlink:title="ggg" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="199" y="110.0234"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="201" y="112.0234"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L52" target="_top" title="eee" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L52" xlink:show="new" xlink:title="eee" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="72" x="397.5" y="126.2339">eee : E&lt;int&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L57" target="_top" title="ggg" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00028/t00028.cc#L57" xlink:show="new" xlink:title="ggg" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="58" x="213" y="118.2339">ggg : G **</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L54" target="_top" title="ggg" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L54" xlink:show="new" xlink:title="ggg" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="383.5" y="130.8281"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="385.5" y="132.8281"/>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="194" x2="444" y1="124.8281" y2="124.8281"/>
<rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="201" y="132.8281"/>
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="116" x="213" y="139.0386">R(class C &amp; c) : void</text>
<path d="M480,64.5 L480,73 L445.29,77 L480,81 L480,89.6328 A0,0 0 0 0 480,89.6328 L582,89.6328 A0,0 0 0 0 582,89.6328 L582,74.5 L572,64.5 L480,64.5 A0,0 0 0 0 480,64.5 " fill="#FBFB77" filter="url(#f1xjm1uzrz6ao9)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M572,64.5 L572,74.5 L582,74.5 L572,64.5 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="81" x="486" y="81.5669">R class note.</text>
<path d="M65.13,89.71 C67.4,110.82 73.43,156.48 86,193 C89.91,204.36 95.75,216.29 101.17,226.25 " fill="none" id="GMN419-C_0001519850480962783588" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M50.47,222.82 C61.22,208.48 76.4,192.37 94.5,184.5 C110.8,177.41 118.35,177.07 134.5,184.5 C153.13,193.08 167.92,211.17 177.68,226.24 " fill="none" id="GMN431-C_0001263778658518784070" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<path d="M491.26,274.62 C497.66,287.75 505.92,304.71 513.66,320.59 " fill="none" id="C_0001949673179441298667-&gt;C_0001014136565447389473" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="520.05,317.72,522.51,338.76,507.46,323.85,520.05,317.72" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M292.61,146.14 C289.15,156.08 285.84,166.25 283,176 C278.68,190.85 274.93,207.7 272.15,221.51 " fill="none" id="C_0001189142882239313116-&gt;C_0000984577258575112753" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="271.17,226.45,276.8438,218.3997,272.1423,221.5455,268.9966,216.844,271.17,226.45" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M298.3,146.27 C290.36,172.45 281.74,200.9 275.55,221.29 " fill="none" id="C_0001189142882239313116-&gt;C_0000984577258575112753-1" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="274.04,226.29,280.488,218.8453,275.4964,221.5068,272.8349,216.5151,274.04,226.29" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="292" y="182.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="21" x="302" y="189.0669">ccc</text>
<path d="M203.1,154.06 C194.03,161.19 185.22,168.54 177,176 C160.19,191.26 143.74,211.05 132.02,226.25 " fill="none" id="C_0001189142882239313116&lt;-C_0001519850480962783588" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="213.42,146.13,206.2253,146.6154,203.9061,153.4433,211.1008,152.958,213.42,146.13" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="180" y="182.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="190" y="189.0669">aaa</text>
<path d="M445.06,138.64 C450.77,141.17 456.44,143.63 462,146 C551.17,183.95 580.26,177.82 666,223 C670.48,225.36 675.06,228.17 679.42,231.05 " fill="none" id="C_0001189142882239313116-&gt;C_0001980597091567213070" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="683.68,233.95,678.483,225.584,679.544,231.1404,673.9876,232.2015,683.68,233.95" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="601" y="182.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="611" y="189.0669">bbb</text>
<path d="M247.86,156.34 C242.68,162.87 237.66,169.47 233,176 C221.56,192.03 210.59,211.42 202.73,226.26 " fill="none" id="C_0001189142882239313116&lt;-C_0001263778658518784070" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="256.13,146.17,249.2413,148.3021,248.5599,155.4809,255.4486,153.3488,256.13,146.17" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="236" y="182.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="246" y="189.0669">ddd</text>
<path d="M395.17,156.04 C401.57,162.76 407.92,169.48 414,176 C429.56,192.68 446.77,211.86 459.71,226.45 " fill="none" id="C_0001189142882239313116&lt;-C_0001949673179441298667" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="385.78,146.22,387.0346,153.3211,394.072,154.8943,392.8174,147.7931,385.78,146.22" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="432" y="182.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="442" y="189.0669">eee</text>
<path d="M348.86,146.27 C360.35,172.56 372.85,201.14 381.78,221.55 " fill="none" id="C_0001189142882239313116-&gt;C_0000764713728396057122" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="383.85,226.29,383.9185,216.4414,381.8512,221.7069,376.5856,219.6395,383.85,226.29" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="371" y="182.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="381" y="189.0669">ggg</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L54" target="_top" title="ggg" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00028/t00028.cc#L54" xlink:show="new" xlink:title="ggg" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="58" x="397.5" y="139.0386">ggg : G **</text>
</a>
<path d="M664.5,64.5 L664.5,73 L629.79,77 L664.5,81 L664.5,89.6328 A0,0 0 0 0 664.5,89.6328 L766.5,89.6328 A0,0 0 0 0 766.5,89.6328 L766.5,74.5 L756.5,64.5 L664.5,64.5 A0,0 0 0 0 664.5,64.5 " fill="#FBFB77" filter="url(#f1tl61trgvrpli)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M756.5,64.5 L756.5,74.5 L766.5,74.5 L756.5,64.5 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="81" x="670.5" y="81.5669">R class note.</text>
<path d="M144.5,42 L144.5,67.1328 A0,0 0 0 0 144.5,67.1328 L342.5,67.1328 A0,0 0 0 0 342.5,67.1328 L342.5,60 L381.5,71.207 L342.5,52 L342.5,52 L332.5,42 L144.5,42 A0,0 0 0 0 144.5,42 " fill="#FBFB77" filter="url(#f1tl61trgvrpli)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M332.5,42 L332.5,52 L342.5,52 L332.5,42 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="177" x="150.5" y="59.0669">R contains an instance of A.</text>
<path d="M144.5,77.1328 L144.5,102.2656 A0,0 0 0 0 144.5,102.2656 L263.5,102.2656 A0,0 0 0 0 263.5,102.2656 L263.5,95.1328 L381.5,96.8164 L263.5,87.1328 L263.5,87.1328 L253.5,77.1328 L144.5,77.1328 A0,0 0 0 0 144.5,77.1328 " fill="#FBFB77" filter="url(#f1tl61trgvrpli)" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M253.5,77.1328 L253.5,87.1328 L263.5,87.1328 L253.5,77.1328 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="98" x="150.5" y="94.1997">Reference to C.</text>
<path d="M557.17,274.62 C563.23,287.75 571.06,304.71 578.39,320.59 " fill="none" id="C_0001949673179441298667-&gt;C_0001014136565447389473" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="584.75,317.67,586.78,338.76,572.04,323.54,584.75,317.67" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M379.77,146.22 C369.29,155.27 359.61,165.21 351.5,176 C341.66,189.09 336.2,206.55 333.18,221.17 " fill="none" id="C_0001189142882239313116-&gt;C_0000984577258575112753" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="332.17,226.41,337.7942,218.3249,333.1121,221.4996,329.9375,216.8175,332.17,226.41" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M434.48,146.03 C405.72,174.38 374.22,205.43 353.3,226.04 " fill="none" id="C_0001189142882239313116-&gt;C_0000984577258575112753-1" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="349.52,229.77,358.7406,226.3087,353.0839,226.2631,353.1295,220.6064,349.52,229.77" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="404.5" y="182.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="21" x="414.5" y="189.0669">ccc</text>
<path d="M365.34,143.25 C328.71,160.57 298.62,174.86 296.5,176 C260.61,195.41 220.48,220.78 196.91,236.06 " fill="none" id="C_0001189142882239313116&lt;-C_0001519850480962783588" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="377.43,137.53,370.2961,136.4776,366.5809,142.658,373.7148,143.7104,377.43,137.53" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="299.5" y="182.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="309.5" y="189.0669">aaa</text>
<path d="M613.34,146.16 C651.32,170.1 694,197.4 732.5,223 C737.01,226 741.78,229.26 746.36,232.43 " fill="none" id="C_0001189142882239313116-&gt;C_0001980597091567213070" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="750.5,235.3,745.3893,226.881,746.3932,232.448,740.8261,233.4519,750.5,235.3" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="686.5" y="182.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="696.5" y="189.0669">bbb</text>
<path d="M641.83,144.16 C643.4,144.78 644.95,145.4 646.5,146 C754.84,188.19 791.7,172.66 896.5,223 C902.7,225.98 909.03,229.85 914.74,233.72 " fill="none" id="C_0001189142882239313116&lt;-C_0001263778658518784070" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="629.78,139.24,633.8301,145.2063,640.8952,143.7625,636.8451,137.7962,629.78,139.24" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="820.5" y="182.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="830.5" y="189.0669">ddd</text>
<path d="M523.82,159.05 C529.99,183.66 536.29,208.79 540.68,226.29 " fill="none" id="C_0001189142882239313116&lt;-C_0001949673179441298667" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="520.62,146.27,518.1983,153.0623,523.5366,157.9102,525.9584,151.1179,520.62,146.27" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="534.5" y="182.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="544.5" y="189.0669">eee</text>
<path d="M486.38,146.27 C479.82,172.45 472.69,200.9 467.57,221.29 " fill="none" id="C_0001189142882239313116-&gt;C_0000764713728396057122" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="466.32,226.29,472.3888,218.5331,467.536,221.4401,464.629,216.5874,466.32,226.29" style="stroke: #A80036; stroke-width: 1.0;"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="481.5" y="182.0664"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="491.5" y="189.0669">ggg</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -24,12 +24,10 @@ File t00029.cc
namespace clanguml {
namespace t00029 {
class A {
};
class A { };
/// \uml{skip}
class B {
};
class B { };
template <typename T> class C {
T param;
@@ -45,17 +43,13 @@ enum class E { one, two, three };
/// \uml{skip}
enum class F { red, green, blue };
class G1 {
};
class G1 { };
class G2 {
};
class G2 { };
class G3 {
};
class G3 { };
class G4 {
};
class G4 { };
struct R {
G1 g1;
@@ -75,3 +69,244 @@ struct R {
```
## Generated UML diagrams
![t00029_class](./t00029_class.svg "PlantUML skip decorator test case")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00029::A",
"id": "1970994826766369014",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "A",
"namespace": "clanguml::t00029",
"source_location": {
"file": "../../tests/t00029/t00029.cc",
"line": 7
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00029::C<T>",
"id": "543766389270348470",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [
{
"access": "private",
"is_static": false,
"name": "param",
"source_location": {
"file": "../../tests/t00029/t00029.cc",
"line": 13
},
"type": "T"
}
],
"methods": [],
"name": "C",
"namespace": "clanguml::t00029",
"source_location": {
"file": "../../tests/t00029/t00029.cc",
"line": 12
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
}
],
"type": "class"
},
{
"constants": [
"one",
"two",
"three"
],
"display_name": "clanguml::t00029::E",
"id": "1936873082456592219",
"is_nested": false,
"name": "E",
"namespace": "clanguml::t00029",
"source_location": {
"file": "../../tests/t00029/t00029.cc",
"line": 21
},
"type": "enum"
},
{
"bases": [],
"display_name": "clanguml::t00029::G1",
"id": "1980718063838190763",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "G1",
"namespace": "clanguml::t00029",
"source_location": {
"file": "../../tests/t00029/t00029.cc",
"line": 26
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00029::G2",
"id": "2204627213593766591",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "G2",
"namespace": "clanguml::t00029",
"source_location": {
"file": "../../tests/t00029/t00029.cc",
"line": 28
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00029::G3",
"id": "767180516665070631",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "G3",
"namespace": "clanguml::t00029",
"source_location": {
"file": "../../tests/t00029/t00029.cc",
"line": 30
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00029::G4",
"id": "715074622924270214",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "G4",
"namespace": "clanguml::t00029",
"source_location": {
"file": "../../tests/t00029/t00029.cc",
"line": 32
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00029::R",
"id": "348749731659902910",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "g1",
"source_location": {
"file": "../../tests/t00029/t00029.cc",
"line": 35
},
"type": "clanguml::t00029::G1"
},
{
"access": "public",
"comment": {
"formatted": "\\uml{skiprelationship}",
"raw": "/// \\uml{skiprelationship}"
},
"is_static": false,
"name": "g3",
"source_location": {
"file": "../../tests/t00029/t00029.cc",
"line": 41
},
"type": "clanguml::t00029::G3 &"
},
{
"access": "public",
"is_static": false,
"name": "g4",
"source_location": {
"file": "../../tests/t00029/t00029.cc",
"line": 43
},
"type": "std::shared_ptr<G4>"
}
],
"methods": [],
"name": "R",
"namespace": "clanguml::t00029",
"source_location": {
"file": "../../tests/t00029/t00029.cc",
"line": 34
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"schema_version": 1
},
"name": "t00029_class",
"relationships": [
{
"access": "public",
"destination": "1980718063838190763",
"label": "g1",
"source": "348749731659902910",
"type": "aggregation"
},
{
"access": "public",
"destination": "715074622924270214",
"label": "g4",
"source": "348749731659902910",
"type": "association"
}
],
"using_namespace": "clanguml::t00029"
}
```

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:464px;height:230px;" version="1.1" viewBox="0 0 464 230" width="464px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="fw85emhb95rcg" width="300%" x="-1" y="-1">
<filter height="300%" id="fwcn55dpuk5bg" 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,33 +9,33 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fw85emhb95rcg)" height="48" id="C_0001970994826766369014" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="10.5" y="27"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwcn55dpuk5bg)" height="48" id="C_0001970994826766369014" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="10.5" y="27"/>
<ellipse cx="25.5" cy="43" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M28.4688,48.6406 Q27.8906,48.9375 27.25,49.0781 Q26.6094,49.2344 25.9063,49.2344 Q23.4063,49.2344 22.0781,47.5938 Q20.7656,45.9375 20.7656,42.8125 Q20.7656,39.6875 22.0781,38.0313 Q23.4063,36.375 25.9063,36.375 Q26.6094,36.375 27.25,36.5313 Q27.9063,36.6875 28.4688,36.9844 L28.4688,39.7031 Q27.8438,39.125 27.25,38.8594 Q26.6563,38.5781 26.0313,38.5781 Q24.6875,38.5781 24,39.6563 Q23.3125,40.7188 23.3125,42.8125 Q23.3125,44.9063 24,45.9844 Q24.6875,47.0469 26.0313,47.0469 Q26.6563,47.0469 27.25,46.7813 Q27.8438,46.5 28.4688,45.9219 L28.4688,48.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="39.5" y="47.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="11.5" x2="49.5" y1="59" y2="59"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="11.5" x2="49.5" y1="67" y2="67"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L14" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L14" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fw85emhb95rcg)" height="60.8047" id="C_0000543766389270348470" style="stroke: #A80036; stroke-width: 1.5;" width="82" x="85.5" y="20.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L12" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L12" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwcn55dpuk5bg)" height="60.8047" id="C_0000543766389270348470" style="stroke: #A80036; stroke-width: 1.5;" width="82" x="85.5" y="20.5"/>
<ellipse cx="114.45" cy="36.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M117.4188,42.1406 Q116.8406,42.4375 116.2,42.5781 Q115.5594,42.7344 114.8563,42.7344 Q112.3563,42.7344 111.0281,41.0938 Q109.7156,39.4375 109.7156,36.3125 Q109.7156,33.1875 111.0281,31.5313 Q112.3563,29.875 114.8563,29.875 Q115.5594,29.875 116.2,30.0313 Q116.8563,30.1875 117.4188,30.4844 L117.4188,33.2031 Q116.7938,32.625 116.2,32.3594 Q115.6063,32.0781 114.9813,32.0781 Q113.6375,32.0781 112.95,33.1563 Q112.2625,34.2188 112.2625,36.3125 Q112.2625,38.4063 112.95,39.4844 Q113.6375,40.5469 114.9813,40.5469 Q115.6063,40.5469 116.2,40.2813 Q116.7938,40 117.4188,39.4219 L117.4188,42.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="131.55" y="40.6543">C</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="161.5" y="17.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="162.5" y="29.6387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="86.5" x2="166.5" y1="52.5" y2="52.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="86.5" x2="166.5" y1="60.5" y2="60.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L15" target="_top" title="param" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L15" xlink:show="new" xlink:title="param" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="91.5" y="58.5"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="93.5" y="60.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L13" target="_top" title="param" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L13" xlink:show="new" xlink:title="param" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="91.5" y="66.5"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="93.5" y="68.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L15" target="_top" title="param" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L15" xlink:show="new" xlink:title="param" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="56" x="105.5" y="66.7104">param : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L13" target="_top" title="param" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L13" xlink:show="new" xlink:title="param" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="56" x="105.5" y="74.7104">param : T</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="86.5" x2="166.5" y1="73.3047" y2="73.3047"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L23" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L23" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fw85emhb95rcg)" height="86.4141" id="C_0001936873082456592219" style="stroke: #A80036; stroke-width: 1.5;" width="42" x="202.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L21" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L21" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwcn55dpuk5bg)" height="86.4141" id="C_0001936873082456592219" style="stroke: #A80036; stroke-width: 1.5;" width="42" x="202.5" y="8"/>
<ellipse cx="218.4" cy="24" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M222.5094,30 L214.7906,30 L214.7906,17.6094 L222.5094,17.6094 L222.5094,19.7656 L217.2438,19.7656 L217.2438,22.4375 L222.0094,22.4375 L222.0094,24.5938 L217.2438,24.5938 L217.2438,27.8438 L222.5094,27.8438 L222.5094,30 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="232.6" y="28.1543">E</text>
@@ -45,67 +45,67 @@
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="30" x="208.5" y="79.8198">three</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="203.5" x2="243.5" y1="86.4141" y2="86.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L28" target="_top" title="G1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L28" xlink:show="new" xlink:title="G1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fw85emhb95rcg)" height="48" id="C_0001980718063838190763" style="stroke: #A80036; stroke-width: 1.5;" width="49" x="300" y="171"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L26" target="_top" title="G1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L26" xlink:show="new" xlink:title="G1" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwcn55dpuk5bg)" height="48" id="C_0001980718063838190763" style="stroke: #A80036; stroke-width: 1.5;" width="49" x="300" y="171"/>
<ellipse cx="315" cy="187" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M317.9688,192.6406 Q317.3906,192.9375 316.75,193.0781 Q316.1094,193.2344 315.4063,193.2344 Q312.9063,193.2344 311.5781,191.5938 Q310.2656,189.9375 310.2656,186.8125 Q310.2656,183.6875 311.5781,182.0313 Q312.9063,180.375 315.4063,180.375 Q316.1094,180.375 316.75,180.5313 Q317.4063,180.6875 317.9688,180.9844 L317.9688,183.7031 Q317.3438,183.125 316.75,182.8594 Q316.1563,182.5781 315.5313,182.5781 Q314.1875,182.5781 313.5,183.6563 Q312.8125,184.7188 312.8125,186.8125 Q312.8125,188.9063 313.5,189.9844 Q314.1875,191.0469 315.5313,191.0469 Q316.1563,191.0469 316.75,190.7813 Q317.3438,190.5 317.9688,189.9219 L317.9688,192.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="17" x="329" y="191.1543">G1</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="301" x2="348" y1="203" y2="203"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="301" x2="348" y1="211" y2="211"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L31" target="_top" title="G2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L31" xlink:show="new" xlink:title="G2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fw85emhb95rcg)" height="48" id="C_0002204627213593766591" style="stroke: #A80036; stroke-width: 1.5;" width="49" x="6" y="171"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L28" target="_top" title="G2" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L28" xlink:show="new" xlink:title="G2" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwcn55dpuk5bg)" height="48" id="C_0002204627213593766591" style="stroke: #A80036; stroke-width: 1.5;" width="49" 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="17" x="35" y="191.1543">G2</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="54" y1="203" y2="203"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="54" y1="211" y2="211"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L34" target="_top" title="G3" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L34" xlink:show="new" xlink:title="G3" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fw85emhb95rcg)" height="48" id="C_0000767180516665070631" style="stroke: #A80036; stroke-width: 1.5;" width="49" x="90" y="171"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L30" target="_top" title="G3" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L30" xlink:show="new" xlink:title="G3" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwcn55dpuk5bg)" height="48" id="C_0000767180516665070631" style="stroke: #A80036; stroke-width: 1.5;" width="49" x="90" y="171"/>
<ellipse cx="105" cy="187" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M107.9688,192.6406 Q107.3906,192.9375 106.75,193.0781 Q106.1094,193.2344 105.4063,193.2344 Q102.9063,193.2344 101.5781,191.5938 Q100.2656,189.9375 100.2656,186.8125 Q100.2656,183.6875 101.5781,182.0313 Q102.9063,180.375 105.4063,180.375 Q106.1094,180.375 106.75,180.5313 Q107.4063,180.6875 107.9688,180.9844 L107.9688,183.7031 Q107.3438,183.125 106.75,182.8594 Q106.1563,182.5781 105.5313,182.5781 Q104.1875,182.5781 103.5,183.6563 Q102.8125,184.7188 102.8125,186.8125 Q102.8125,188.9063 103.5,189.9844 Q104.1875,191.0469 105.5313,191.0469 Q106.1563,191.0469 106.75,190.7813 Q107.3438,190.5 107.9688,189.9219 L107.9688,192.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="17" x="119" y="191.1543">G3</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="91" x2="138" y1="203" y2="203"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="91" x2="138" y1="211" y2="211"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L37" target="_top" title="G4" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L37" xlink:show="new" xlink:title="G4" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fw85emhb95rcg)" height="48" id="C_0000715074622924270214" style="stroke: #A80036; stroke-width: 1.5;" width="49" x="384" y="171"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L32" target="_top" title="G4" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L32" xlink:show="new" xlink:title="G4" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwcn55dpuk5bg)" height="48" id="C_0000715074622924270214" style="stroke: #A80036; stroke-width: 1.5;" width="49" x="384" y="171"/>
<ellipse cx="399" cy="187" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M401.9688,192.6406 Q401.3906,192.9375 400.75,193.0781 Q400.1094,193.2344 399.4063,193.2344 Q396.9063,193.2344 395.5781,191.5938 Q394.2656,189.9375 394.2656,186.8125 Q394.2656,183.6875 395.5781,182.0313 Q396.9063,180.375 399.4063,180.375 Q400.1094,180.375 400.75,180.5313 Q401.4063,180.6875 401.9688,180.9844 L401.9688,183.7031 Q401.3438,183.125 400.75,182.8594 Q400.1563,182.5781 399.5313,182.5781 Q398.1875,182.5781 397.5,183.6563 Q396.8125,184.7188 396.8125,186.8125 Q396.8125,188.9063 397.5,189.9844 Q398.1875,191.0469 399.5313,191.0469 Q400.1563,191.0469 400.75,190.7813 Q401.3438,190.5 401.9688,189.9219 L401.9688,192.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="17" x="413" y="191.1543">G4</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="385" x2="432" y1="203" y2="203"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="385" x2="432" y1="211" y2="211"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L40" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L40" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fw85emhb95rcg)" height="86.4141" id="C_0000348749731659902910" style="stroke: #A80036; stroke-width: 1.5;" width="174" x="279.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L34" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L34" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fwcn55dpuk5bg)" height="86.4141" id="C_0000348749731659902910" style="stroke: #A80036; stroke-width: 1.5;" width="174" x="279.5" y="8"/>
<ellipse cx="358.25" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M361.2188,29.6406 Q360.6406,29.9375 360,30.0781 Q359.3594,30.2344 358.6563,30.2344 Q356.1563,30.2344 354.8281,28.5938 Q353.5156,26.9375 353.5156,23.8125 Q353.5156,20.6875 354.8281,19.0313 Q356.1563,17.375 358.6563,17.375 Q359.3594,17.375 360,17.5313 Q360.6563,17.6875 361.2188,17.9844 L361.2188,20.7031 Q360.5938,20.125 360,19.8594 Q359.4063,19.5781 358.7813,19.5781 Q357.4375,19.5781 356.75,20.6563 Q356.0625,21.7188 356.0625,23.8125 Q356.0625,25.9063 356.75,26.9844 Q357.4375,28.0469 358.7813,28.0469 Q359.4063,28.0469 360,27.7813 Q360.5938,27.5 361.2188,26.9219 L361.2188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="378.75" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="280.5" x2="452.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="280.5" x2="452.5" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L41" target="_top" title="g1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L41" xlink:show="new" xlink:title="g1" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="285.5" y="46"/>
<ellipse cx="290.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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L35" target="_top" title="g1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L35" xlink:show="new" xlink:title="g1" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="285.5" y="54"/>
<ellipse cx="290.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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L41" target="_top" title="g1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L41" xlink:show="new" xlink:title="g1" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="42" x="299.5" y="54.2104">g1 : G1</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L35" target="_top" title="g1" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L35" xlink:show="new" xlink:title="g1" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="42" x="299.5" y="62.2104">g1 : G1</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L47" target="_top" title="\uml{skiprelationship}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L47" xlink:show="new" xlink:title="\uml{skiprelationship}" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="285.5" y="58.8047"/>
<ellipse cx="290.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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L41" target="_top" title="g3" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L41" xlink:show="new" xlink:title="g3" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="285.5" y="66.8047"/>
<ellipse cx="290.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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L47" target="_top" title="\uml{skiprelationship}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L47" xlink:show="new" xlink:title="\uml{skiprelationship}" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="56" x="299.5" y="67.0151">g3 : G3 &amp;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L41" target="_top" title="g3" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L41" xlink:show="new" xlink:title="g3" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="56" x="299.5" y="75.0151">g3 : G3 &amp;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L49" target="_top" title="g4" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L49" xlink:show="new" xlink:title="g4" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="285.5" y="71.6094"/>
<ellipse cx="290.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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L43" target="_top" title="g4" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L43" xlink:show="new" xlink:title="g4" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="285.5" y="79.6094"/>
<ellipse cx="290.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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L49" target="_top" title="g4" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00029/t00029.cc#L49" xlink:show="new" xlink:title="g4" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="148" x="299.5" y="79.8198">g4 : std::shared_ptr&lt;G4&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L43" target="_top" title="g4" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00029/t00029.cc#L43" xlink:show="new" xlink:title="g4" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="148" x="299.5" y="87.8198">g4 : std::shared_ptr&lt;G4&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="280.5" x2="452.5" y1="86.4141" y2="86.4141"/>
<path d="M341.26,106.77 C339.11,112.52 337.14,118.33 335.5,124 C331.06,139.36 328.29,157.18 326.65,170.99 " fill="none" id="C_0000348749731659902910&lt;-C_0001980718063838190763" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#FFFFFF" points="346.17,94.38,340.2378,98.4798,341.7406,105.5326,347.6728,101.4328,346.17,94.38" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="341.5" cy="133.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -24,20 +24,15 @@ File t00030.cc
namespace clanguml {
namespace t00030 {
class A {
};
class A { };
class B {
};
class B { };
class C {
};
class C { };
class D {
};
class D { };
class E {
};
class E { };
struct R {
/// @uml{association[]}
@@ -62,3 +57,252 @@ struct R {
```
## Generated UML diagrams
![t00030_class](./t00030_class.svg "PlantUML relationship decorators test case")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00030::A",
"id": "64769484767514424",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "A",
"namespace": "clanguml::t00030",
"source_location": {
"file": "../../tests/t00030/t00030.cc",
"line": 7
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00030::B",
"id": "156923198106222307",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "B",
"namespace": "clanguml::t00030",
"source_location": {
"file": "../../tests/t00030/t00030.cc",
"line": 9
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00030::C",
"id": "1651557398557662399",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "C",
"namespace": "clanguml::t00030",
"source_location": {
"file": "../../tests/t00030/t00030.cc",
"line": 11
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00030::D",
"id": "1089781072752262158",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "D",
"namespace": "clanguml::t00030",
"source_location": {
"file": "../../tests/t00030/t00030.cc",
"line": 13
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00030::E",
"id": "425964641881054607",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "E",
"namespace": "clanguml::t00030",
"source_location": {
"file": "../../tests/t00030/t00030.cc",
"line": 15
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00030::R",
"id": "263468735940481091",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [
{
"access": "public",
"comment": {
"formatted": "@uml{association[]}",
"raw": "/// @uml{association[]}"
},
"is_static": false,
"name": "aaa",
"source_location": {
"file": "../../tests/t00030/t00030.cc",
"line": 19
},
"type": "clanguml::t00030::A"
},
{
"access": "public",
"comment": {
"formatted": "@uml{composition[0..1:1..*]}",
"raw": "/// @uml{composition[0..1:1..*]}"
},
"is_static": false,
"name": "bbb",
"source_location": {
"file": "../../tests/t00030/t00030.cc",
"line": 22
},
"type": "std::vector<B>"
},
{
"access": "public",
"comment": {
"formatted": "@uml{aggregation[0..1:1..5]}",
"raw": "/// @uml{aggregation[0..1:1..5]}"
},
"is_static": false,
"name": "ccc",
"source_location": {
"file": "../../tests/t00030/t00030.cc",
"line": 25
},
"type": "std::vector<C>"
},
{
"access": "public",
"comment": {
"formatted": "@uml{association[:1]}",
"raw": "/// @uml{association[:1]}"
},
"is_static": false,
"name": "ddd",
"source_location": {
"file": "../../tests/t00030/t00030.cc",
"line": 28
},
"type": "clanguml::t00030::D"
},
{
"access": "public",
"comment": {
"formatted": "@uml{aggregation[:1]}",
"raw": "/// @uml{aggregation[:1]}"
},
"is_static": false,
"name": "eee",
"source_location": {
"file": "../../tests/t00030/t00030.cc",
"line": 31
},
"type": "clanguml::t00030::E *"
}
],
"methods": [],
"name": "R",
"namespace": "clanguml::t00030",
"source_location": {
"file": "../../tests/t00030/t00030.cc",
"line": 17
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"schema_version": 1
},
"name": "t00030_class",
"relationships": [
{
"access": "public",
"destination": "64769484767514424",
"label": "aaa",
"source": "263468735940481091",
"type": "association"
},
{
"access": "public",
"destination": "156923198106222307",
"label": "bbb",
"multiplicity_destination": "1..*",
"multiplicity_source": "0..1",
"source": "263468735940481091",
"type": "composition"
},
{
"access": "public",
"destination": "1651557398557662399",
"label": "ccc",
"multiplicity_destination": "1..5",
"multiplicity_source": "0..1",
"source": "263468735940481091",
"type": "aggregation"
},
{
"access": "public",
"destination": "1089781072752262158",
"label": "ddd",
"multiplicity_destination": "1",
"source": "263468735940481091",
"type": "association"
},
{
"access": "public",
"destination": "425964641881054607",
"label": "eee",
"multiplicity_destination": "1",
"source": "263468735940481091",
"type": "aggregation"
}
],
"using_namespace": "clanguml::t00030"
}
```

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:366px;height:256px;" version="1.1" viewBox="0 0 366 256" width="366px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1c7tzozv4rcsn" width="300%" x="-1" y="-1">
<filter height="300%" id="f8454g7lfahj" 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,89 +9,89 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1c7tzozv4rcsn)" height="48" id="C_0000064769484767514424" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f8454g7lfahj)" height="48" id="C_0000064769484767514424" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L10" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L10" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1c7tzozv4rcsn)" height="48" id="C_0000156923198106222307" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="84" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L9" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L9" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f8454g7lfahj)" height="48" id="C_0000156923198106222307" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="84" y="197"/>
<ellipse cx="99" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M101.9688,218.6406 Q101.3906,218.9375 100.75,219.0781 Q100.1094,219.2344 99.4063,219.2344 Q96.9063,219.2344 95.5781,217.5938 Q94.2656,215.9375 94.2656,212.8125 Q94.2656,209.6875 95.5781,208.0313 Q96.9063,206.375 99.4063,206.375 Q100.1094,206.375 100.75,206.5313 Q101.4063,206.6875 101.9688,206.9844 L101.9688,209.7031 Q101.3438,209.125 100.75,208.8594 Q100.1563,208.5781 99.5313,208.5781 Q98.1875,208.5781 97.5,209.6563 Q96.8125,210.7188 96.8125,212.8125 Q96.8125,214.9063 97.5,215.9844 Q98.1875,217.0469 99.5313,217.0469 Q100.1563,217.0469 100.75,216.7813 Q101.3438,216.5 101.9688,215.9219 L101.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="113" y="217.1543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="85" x2="123" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="85" x2="123" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L13" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L13" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1c7tzozv4rcsn)" height="48" id="C_0001651557398557662399" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="161" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L11" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L11" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f8454g7lfahj)" height="48" id="C_0001651557398557662399" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="161" y="197"/>
<ellipse cx="176" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M178.9688,218.6406 Q178.3906,218.9375 177.75,219.0781 Q177.1094,219.2344 176.4063,219.2344 Q173.9063,219.2344 172.5781,217.5938 Q171.2656,215.9375 171.2656,212.8125 Q171.2656,209.6875 172.5781,208.0313 Q173.9063,206.375 176.4063,206.375 Q177.1094,206.375 177.75,206.5313 Q178.4063,206.6875 178.9688,206.9844 L178.9688,209.7031 Q178.3438,209.125 177.75,208.8594 Q177.1563,208.5781 176.5313,208.5781 Q175.1875,208.5781 174.5,209.6563 Q173.8125,210.7188 173.8125,212.8125 Q173.8125,214.9063 174.5,215.9844 Q175.1875,217.0469 176.5313,217.0469 Q177.1563,217.0469 177.75,216.7813 Q178.3438,216.5 178.9688,215.9219 L178.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="190" y="217.1543">C</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="162" x2="200" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="162" x2="200" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L16" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L16" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1c7tzozv4rcsn)" height="48" id="C_0001089781072752262158" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="236.5" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L13" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L13" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f8454g7lfahj)" height="48" id="C_0001089781072752262158" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="236.5" y="197"/>
<ellipse cx="251.5" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M254.4688,218.6406 Q253.8906,218.9375 253.25,219.0781 Q252.6094,219.2344 251.9063,219.2344 Q249.4063,219.2344 248.0781,217.5938 Q246.7656,215.9375 246.7656,212.8125 Q246.7656,209.6875 248.0781,208.0313 Q249.4063,206.375 251.9063,206.375 Q252.6094,206.375 253.25,206.5313 Q253.9063,206.6875 254.4688,206.9844 L254.4688,209.7031 Q253.8438,209.125 253.25,208.8594 Q252.6563,208.5781 252.0313,208.5781 Q250.6875,208.5781 250,209.6563 Q249.3125,210.7188 249.3125,212.8125 Q249.3125,214.9063 250,215.9844 Q250.6875,217.0469 252.0313,217.0469 Q252.6563,217.0469 253.25,216.7813 Q253.8438,216.5 254.4688,215.9219 L254.4688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="265.5" y="217.1543">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="237.5" x2="276.5" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="237.5" x2="276.5" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L19" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L19" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1c7tzozv4rcsn)" height="48" id="C_0000425964641881054607" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="315" y="197"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L15" target="_top" title="E" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L15" xlink:show="new" xlink:title="E" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f8454g7lfahj)" height="48" id="C_0000425964641881054607" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="315" y="197"/>
<ellipse cx="330" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M332.9688,218.6406 Q332.3906,218.9375 331.75,219.0781 Q331.1094,219.2344 330.4063,219.2344 Q327.9063,219.2344 326.5781,217.5938 Q325.2656,215.9375 325.2656,212.8125 Q325.2656,209.6875 326.5781,208.0313 Q327.9063,206.375 330.4063,206.375 Q331.1094,206.375 331.75,206.5313 Q332.4063,206.6875 332.9688,206.9844 L332.9688,209.7031 Q332.3438,209.125 331.75,208.8594 Q331.1563,208.5781 330.5313,208.5781 Q329.1875,208.5781 328.5,209.6563 Q327.8125,210.7188 327.8125,212.8125 Q327.8125,214.9063 328.5,215.9844 Q329.1875,217.0469 330.5313,217.0469 Q331.1563,217.0469 331.75,216.7813 Q332.3438,216.5 332.9688,215.9219 L332.9688,218.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="344" y="217.1543">E</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="316" x2="354" y1="229" y2="229"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="316" x2="354" y1="237" y2="237"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L22" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L22" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1c7tzozv4rcsn)" height="112.0234" id="C_0000263468735940481091" style="stroke: #A80036; stroke-width: 1.5;" width="146" x="109" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L17" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L17" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f8454g7lfahj)" height="112.0234" id="C_0000263468735940481091" style="stroke: #A80036; stroke-width: 1.5;" width="146" x="109" y="8"/>
<ellipse cx="173.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M176.7188,29.6406 Q176.1406,29.9375 175.5,30.0781 Q174.8594,30.2344 174.1563,30.2344 Q171.6563,30.2344 170.3281,28.5938 Q169.0156,26.9375 169.0156,23.8125 Q169.0156,20.6875 170.3281,19.0313 Q171.6563,17.375 174.1563,17.375 Q174.8594,17.375 175.5,17.5313 Q176.1563,17.6875 176.7188,17.9844 L176.7188,20.7031 Q176.0938,20.125 175.5,19.8594 Q174.9063,19.5781 174.2813,19.5781 Q172.9375,19.5781 172.25,20.6563 Q171.5625,21.7188 171.5625,23.8125 Q171.5625,25.9063 172.25,26.9844 Q172.9375,28.0469 174.2813,28.0469 Q174.9063,28.0469 175.5,27.7813 Q176.0938,27.5 176.7188,26.9219 L176.7188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="194.25" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="110" x2="254" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="110" x2="254" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L24" target="_top" title="@uml{association[]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L24" xlink:show="new" xlink:title="@uml{association[]}" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="115" y="46"/>
<ellipse cx="120" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L19" target="_top" title="aaa" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L19" xlink:show="new" xlink:title="aaa" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="115" y="54"/>
<ellipse cx="120" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L24" target="_top" title="@uml{association[]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L24" xlink:show="new" xlink:title="@uml{association[]}" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="40" x="129" y="54.2104">aaa : A</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L19" target="_top" title="aaa" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L19" xlink:show="new" xlink:title="aaa" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="40" x="129" y="62.2104">aaa : A</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L27" target="_top" title="@uml{composition[0..1:1..*]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L27" xlink:show="new" xlink:title="@uml{composition[0..1:1..*]}" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="115" y="58.8047"/>
<ellipse cx="120" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L22" target="_top" title="bbb" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L22" xlink:show="new" xlink:title="bbb" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="115" y="66.8047"/>
<ellipse cx="120" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L27" target="_top" title="@uml{composition[0..1:1..*]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L27" xlink:show="new" xlink:title="@uml{composition[0..1:1..*]}" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="120" x="129" y="67.0151">bbb : std::vector&lt;B&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L22" target="_top" title="bbb" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L22" xlink:show="new" xlink:title="bbb" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="120" x="129" y="75.0151">bbb : std::vector&lt;B&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L30" target="_top" title="@uml{aggregation[0..1:1..5]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L30" xlink:show="new" xlink:title="@uml{aggregation[0..1:1..5]}" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="115" y="71.6094"/>
<ellipse cx="120" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L25" target="_top" title="ccc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L25" xlink:show="new" xlink:title="ccc" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="115" y="79.6094"/>
<ellipse cx="120" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L30" target="_top" title="@uml{aggregation[0..1:1..5]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L30" xlink:show="new" xlink:title="@uml{aggregation[0..1:1..5]}" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="117" x="129" y="79.8198">ccc : std::vector&lt;C&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L25" target="_top" title="ccc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L25" xlink:show="new" xlink:title="ccc" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="117" x="129" y="87.8198">ccc : std::vector&lt;C&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L33" target="_top" title="@uml{association[:1]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L33" xlink:show="new" xlink:title="@uml{association[:1]}" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="115" y="84.4141"/>
<ellipse cx="120" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L28" target="_top" title="ddd" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L28" xlink:show="new" xlink:title="ddd" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="115" y="92.4141"/>
<ellipse cx="120" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L33" target="_top" title="@uml{association[:1]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L33" xlink:show="new" xlink:title="@uml{association[:1]}" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="41" x="129" y="92.6245">ddd : D</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L28" target="_top" title="ddd" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L28" xlink:show="new" xlink:title="ddd" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="41" x="129" y="100.6245">ddd : D</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L36" target="_top" title="@uml{aggregation[:1]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L36" xlink:show="new" xlink:title="@uml{aggregation[:1]}" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="115" y="97.2188"/>
<ellipse cx="120" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L31" target="_top" title="eee" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L31" xlink:show="new" xlink:title="eee" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="115" y="105.2188"/>
<ellipse cx="120" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L36" target="_top" title="@uml{aggregation[:1]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00030/t00030.cc#L36" xlink:show="new" xlink:title="@uml{aggregation[:1]}" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="50" x="129" y="105.4292">eee : E *</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L31" target="_top" title="eee" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00030/t00030.cc#L31" xlink:show="new" xlink:title="eee" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="50" x="129" y="113.4292">eee : E *</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="110" x2="254" y1="112.0234" y2="112.0234"/>
<path d="M111.59,120.19 C100.65,129.74 89.75,139.87 80,150 C67.26,163.23 54.64,179.38 44.8,192.83 " fill="none" id="C_0000263468735940481091-&gt;C_0000064769484767514424" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="41.84,196.91,50.3591,191.9679,44.7732,192.8608,43.8804,187.2748,41.84,196.91" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="86" cy="159.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -25,8 +25,7 @@ namespace clanguml {
namespace t00031 {
/// @uml{style[#back:lightgreen|yellow;header:blue/red]}
class A {
};
class A { };
/// @uml{style[#line.dotted:blue]}
enum B { one, two, three };
@@ -36,8 +35,7 @@ template <typename T> class C {
T ttt;
};
class D {
};
class D { };
struct R {
/// @uml{style[#red,dashed,thickness=2]}
@@ -60,3 +58,265 @@ struct R {
```
## Generated UML diagrams
![t00031_class](./t00031_class.svg "PlantUML style decorator test case")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"comment": {
"formatted": "@uml{style[#back:lightgreen|yellow;header:blue/red]}",
"raw": "/// @uml{style[#back:lightgreen|yellow;header:blue/red]}"
},
"display_name": "clanguml::t00031::A",
"id": "847775539502907247",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "A",
"namespace": "clanguml::t00031",
"source_location": {
"file": "../../tests/t00031/t00031.cc",
"line": 8
},
"template_parameters": [],
"type": "class"
},
{
"comment": {
"formatted": "@uml{style[#line.dotted:blue]}",
"raw": "/// @uml{style[#line.dotted:blue]}"
},
"constants": [
"one",
"two",
"three"
],
"display_name": "clanguml::t00031::B",
"id": "1441796358326382179",
"is_nested": false,
"name": "B",
"namespace": "clanguml::t00031",
"source_location": {
"file": "../../tests/t00031/t00031.cc",
"line": 11
},
"type": "enum"
},
{
"bases": [],
"comment": {
"formatted": "@uml{style[#pink;line:red;line.bold;text:red]}",
"raw": "/// @uml{style[#pink;line:red;line.bold;text:red]}"
},
"display_name": "clanguml::t00031::C<T>",
"id": "116209144733282955",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [
{
"access": "private",
"is_static": false,
"name": "ttt",
"source_location": {
"file": "../../tests/t00031/t00031.cc",
"line": 15
},
"type": "T"
}
],
"methods": [],
"name": "C",
"namespace": "clanguml::t00031",
"source_location": {
"file": "../../tests/t00031/t00031.cc",
"line": 14
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00031::D",
"id": "2266534344475505157",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "D",
"namespace": "clanguml::t00031",
"source_location": {
"file": "../../tests/t00031/t00031.cc",
"line": 18
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00031::C<int>",
"id": "208700529175860645",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "C",
"namespace": "clanguml::t00031",
"source_location": {
"file": "../../tests/t00031/t00031.cc",
"line": 14
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "int"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00031::R",
"id": "484712092364868032",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [
{
"access": "public",
"comment": {
"formatted": "@uml{style[#red,dashed,thickness=2]}",
"raw": "/// @uml{style[#red,dashed,thickness=2]}"
},
"is_static": false,
"name": "aaa",
"source_location": {
"file": "../../tests/t00031/t00031.cc",
"line": 22
},
"type": "clanguml::t00031::A *"
},
{
"access": "public",
"comment": {
"formatted": "@uml{composition}\n@uml{style[#green,dashed,thickness=4]}",
"raw": "/// @uml{composition}\n /// @uml{style[#green,dashed,thickness=4]}"
},
"is_static": false,
"name": "bbb",
"source_location": {
"file": "../../tests/t00031/t00031.cc",
"line": 26
},
"type": "std::vector<B>"
},
{
"access": "public",
"comment": {
"formatted": "@uml{style[#blue,dotted,thickness=8]}",
"raw": "/// @uml{style[#blue,dotted,thickness=8]}"
},
"is_static": false,
"name": "ccc",
"source_location": {
"file": "../../tests/t00031/t00031.cc",
"line": 29
},
"type": "C<int>"
},
{
"access": "public",
"comment": {
"formatted": "@uml{style[#blue,plain,thickness=16]}",
"raw": "/// @uml{style[#blue,plain,thickness=16]}"
},
"is_static": false,
"name": "ddd",
"source_location": {
"file": "../../tests/t00031/t00031.cc",
"line": 32
},
"type": "clanguml::t00031::D *"
}
],
"methods": [],
"name": "R",
"namespace": "clanguml::t00031",
"source_location": {
"file": "../../tests/t00031/t00031.cc",
"line": 20
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"schema_version": 1
},
"name": "t00031_class",
"relationships": [
{
"access": "public",
"destination": "116209144733282955",
"source": "208700529175860645",
"type": "instantiation"
},
{
"access": "public",
"destination": "847775539502907247",
"label": "aaa",
"source": "484712092364868032",
"type": "association"
},
{
"access": "public",
"destination": "1441796358326382179",
"label": "bbb",
"source": "484712092364868032",
"type": "composition"
},
{
"access": "public",
"destination": "208700529175860645",
"label": "ccc",
"source": "484712092364868032",
"type": "aggregation"
},
{
"access": "public",
"destination": "2266534344475505157",
"label": "ddd",
"source": "484712092364868032",
"type": "association"
}
],
"using_namespace": "clanguml::t00031"
}
```

View File

@@ -1,33 +1,33 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="402px" preserveAspectRatio="none" style="width:312px;height:402px;" version="1.1" viewBox="0 0 312 402" width="312px" zoomAndPan="magnify">
<defs>
<linearGradient id="gxlyxk2zmcwoq0" x1="0%" x2="100%" y1="50%" y2="50%">
<linearGradient id="g5i2gaj84zob0" x1="0%" x2="100%" y1="50%" y2="50%">
<stop offset="0%" stop-color="#90EE90"/>
<stop offset="100%" stop-color="#FFFF00"/>
</linearGradient>
<filter height="300%" id="fxlyxk2zmcwoq" width="300%" x="-1" y="-1">
<filter height="300%" id="f5i2gaj84zob" 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"/>
<feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/>
</filter>
<linearGradient id="gxlyxk2zmcwoq1" x1="0%" x2="100%" y1="0%" y2="100%">
<linearGradient id="g5i2gaj84zob1" x1="0%" x2="100%" y1="0%" y2="100%">
<stop offset="0%" stop-color="#0000FF"/>
<stop offset="100%" stop-color="#FF0000"/>
</linearGradient>
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L8" target="_top" title="@uml{style[#back:lightgreen|yellow;header:blue/red]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L8" xlink:show="new" xlink:title="@uml{style[#back:lightgreen|yellow;header:blue/red]}" xlink:type="simple">
<rect fill="url(#gxlyxk2zmcwoq0)" filter="url(#fxlyxk2zmcwoq)" height="48" id="C_0000847775539502907247" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="203"/>
<rect fill="url(#gxlyxk2zmcwoq1)" height="32" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="203"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L8" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L8" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="url(#g5i2gaj84zob0)" filter="url(#f5i2gaj84zob)" height="48" id="C_0000847775539502907247" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="203"/>
<rect fill="url(#g5i2gaj84zob1)" height="32" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="6" y="203"/>
<ellipse cx="21" cy="219" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,224.6406 Q23.3906,224.9375 22.75,225.0781 Q22.1094,225.2344 21.4063,225.2344 Q18.9063,225.2344 17.5781,223.5938 Q16.2656,221.9375 16.2656,218.8125 Q16.2656,215.6875 17.5781,214.0313 Q18.9063,212.375 21.4063,212.375 Q22.1094,212.375 22.75,212.5313 Q23.4063,212.6875 23.9688,212.9844 L23.9688,215.7031 Q23.3438,215.125 22.75,214.8594 Q22.1563,214.5781 21.5313,214.5781 Q20.1875,214.5781 19.5,215.6563 Q18.8125,216.7188 18.8125,218.8125 Q18.8125,220.9063 19.5,221.9844 Q20.1875,223.0469 21.5313,223.0469 Q22.1563,223.0469 22.75,222.7813 Q23.3438,222.5 23.9688,221.9219 L23.9688,224.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="35" y="223.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="45" y1="235" y2="235"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="45" y1="243" y2="243"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L12" target="_top" title="@uml{style[#line.dotted:blue]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L12" xlink:show="new" xlink:title="@uml{style[#line.dotted:blue]}" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fxlyxk2zmcwoq)" height="86.4141" id="C_0001441796358326382179" style="stroke: #0000FF; stroke-width: 1.0; stroke-dasharray: 1.0,3.0;" width="42" x="83" y="184"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L11" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L11" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f5i2gaj84zob)" height="86.4141" id="C_0001441796358326382179" style="stroke: #0000FF; stroke-width: 1.0; stroke-dasharray: 1.0,3.0;" width="42" x="83" y="184"/>
<ellipse cx="98.9" cy="200" fill="#EB937F" rx="11" ry="11" style="stroke: #0000FF; stroke-width: 1.0;"/>
<path d="M103.0094,206 L95.2906,206 L95.2906,193.6094 L103.0094,193.6094 L103.0094,195.7656 L97.7438,195.7656 L97.7438,198.4375 L102.5094,198.4375 L102.5094,200.5938 L97.7438,200.5938 L97.7438,203.8438 L103.0094,203.8438 L103.0094,206 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="113.1" y="204.1543">B</text>
@@ -37,76 +37,78 @@
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="30" x="89" y="255.8198">three</text>
<line style="stroke: #0000FF; stroke-width: 1.0; stroke-dasharray: 1.0,3.0;" x1="84" x2="124" y1="262.4141" y2="262.4141"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L15" target="_top" title="@uml{style[#pink;line:red;line.bold;text:red]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L15" xlink:show="new" xlink:title="@uml{style[#pink;line:red;line.bold;text:red]}" xlink:type="simple">
<rect fill="#FFC0CB" filter="url(#fxlyxk2zmcwoq)" height="60.8047" id="C_0000116209144733282955" style="stroke: #FF0000; stroke-width: 2.0;" width="57" x="239.5" y="331"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L14" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L14" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FFC0CB" filter="url(#f5i2gaj84zob)" height="60.8047" id="C_0000116209144733282955" style="stroke: #FF0000; stroke-width: 2.0;" width="57" x="239.5" y="331"/>
<rect fill="#FFC0CB" height="32" style="stroke: #FF0000; stroke-width: 2.0;" width="57" x="239.5" y="331"/>
<ellipse cx="257.2" cy="347" fill="#ADD1B2" rx="11" ry="11" style="stroke: #FF0000; stroke-width: 1.0;"/>
<path d="M260.1688,352.6406 Q259.5906,352.9375 258.95,353.0781 Q258.3094,353.2344 257.6063,353.2344 Q255.1063,353.2344 253.7781,351.5938 Q252.4656,349.9375 252.4656,346.8125 Q252.4656,343.6875 253.7781,342.0313 Q255.1063,340.375 257.6063,340.375 Q258.3094,340.375 258.95,340.5313 Q259.6063,340.6875 260.1688,340.9844 L260.1688,343.7031 Q259.5438,343.125 258.95,342.8594 Q258.3563,342.5781 257.7313,342.5781 Q256.3875,342.5781 255.7,343.6563 Q255.0125,344.7188 255.0125,346.8125 Q255.0125,348.9063 255.7,349.9844 Q256.3875,351.0469 257.7313,351.0469 Q258.3563,351.0469 258.95,350.7813 Q259.5438,350.5 260.1688,349.9219 L260.1688,352.6406 Z "/>
<text fill="#FF0000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="271.8" y="351.1543">C</text>
<rect fill="#FFC0CB" height="15.9688" style="stroke: #FF0000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="290.5" y="328"/>
<text fill="#FF0000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="291.5" y="340.1387">T</text>
<line style="stroke: #FF0000; stroke-width: 2.0;" x1="240.5" x2="295.5" y1="363" y2="363"/>
<line style="stroke: #FF0000; stroke-width: 1.5;" x1="240.5" x2="295.5" y1="363" y2="363"/>
<line style="stroke: #FF0000; stroke-width: 1.5;" x1="240.5" x2="295.5" y1="371" y2="371"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L16" target="_top" title="ttt" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L16" xlink:show="new" xlink:title="ttt" xlink:type="simple">
<rect fill="#FFC0CB" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="245.5" y="369"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="247.5" y="371"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L15" target="_top" title="ttt" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L15" xlink:show="new" xlink:title="ttt" xlink:type="simple">
<rect fill="#FFC0CB" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="245.5" y="377"/>
<rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="247.5" y="379"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L16" target="_top" title="ttt" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L16" xlink:show="new" xlink:title="ttt" xlink:type="simple">
<text fill="#FF0000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="31" x="259.5" y="377.2104">ttt : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L15" target="_top" title="ttt" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L15" xlink:show="new" xlink:title="ttt" xlink:type="simple">
<text fill="#FF0000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="31" x="259.5" y="385.2104">ttt : T</text>
</a>
<line style="stroke: #FF0000; stroke-width: 2.0;" x1="240.5" x2="295.5" y1="383.8047" y2="383.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L19" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L19" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fxlyxk2zmcwoq)" height="48" id="C_0002266534344475505157" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="161.5" y="203"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L18" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L18" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f5i2gaj84zob)" height="48" id="C_0002266534344475505157" style="stroke: #A80036; stroke-width: 1.5;" width="41" x="161.5" y="203"/>
<ellipse cx="176.5" cy="219" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M179.4688,224.6406 Q178.8906,224.9375 178.25,225.0781 Q177.6094,225.2344 176.9063,225.2344 Q174.4063,225.2344 173.0781,223.5938 Q171.7656,221.9375 171.7656,218.8125 Q171.7656,215.6875 173.0781,214.0313 Q174.4063,212.375 176.9063,212.375 Q177.6094,212.375 178.25,212.5313 Q178.9063,212.6875 179.4688,212.9844 L179.4688,215.7031 Q178.8438,215.125 178.25,214.8594 Q177.6563,214.5781 177.0313,214.5781 Q175.6875,214.5781 175,215.6563 Q174.3125,216.7188 174.3125,218.8125 Q174.3125,220.9063 175,221.9844 Q175.6875,223.0469 177.0313,223.0469 Q177.6563,223.0469 178.25,222.7813 Q178.8438,222.5 179.4688,221.9219 L179.4688,224.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="190.5" y="223.1543">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="162.5" x2="201.5" y1="235" y2="235"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="162.5" x2="201.5" y1="243" y2="243"/>
</a>
<rect fill="#FEFECE" filter="url(#fxlyxk2zmcwoq)" height="48" id="C_0000208700529175860645" style="stroke: #A80036; stroke-width: 1.5;" width="60" x="238" y="203"/>
<ellipse cx="253" cy="219" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M255.9688,224.6406 Q255.3906,224.9375 254.75,225.0781 Q254.1094,225.2344 253.4063,225.2344 Q250.9063,225.2344 249.5781,223.5938 Q248.2656,221.9375 248.2656,218.8125 Q248.2656,215.6875 249.5781,214.0313 Q250.9063,212.375 253.4063,212.375 Q254.1094,212.375 254.75,212.5313 Q255.4063,212.6875 255.9688,212.9844 L255.9688,215.7031 Q255.3438,215.125 254.75,214.8594 Q254.1563,214.5781 253.5313,214.5781 Q252.1875,214.5781 251.5,215.6563 Q250.8125,216.7188 250.8125,218.8125 Q250.8125,220.9063 251.5,221.9844 Q252.1875,223.0469 253.5313,223.0469 Q254.1563,223.0469 254.75,222.7813 Q255.3438,222.5 255.9688,221.9219 L255.9688,224.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="267" y="223.1543">C</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="18" x="283" y="200"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="16" x="284" y="212.1387">int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="239" x2="297" y1="235" y2="235"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="239" x2="297" y1="243" y2="243"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L22" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L22" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fxlyxk2zmcwoq)" height="99.2188" id="C_0000484712092364868032" style="stroke: #A80036; stroke-width: 1.5;" width="146" x="70" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L14" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L14" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f5i2gaj84zob)" height="48" id="C_0000208700529175860645" style="stroke: #A80036; stroke-width: 1.5;" width="60" x="238" y="203"/>
<ellipse cx="253" cy="219" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M255.9688,224.6406 Q255.3906,224.9375 254.75,225.0781 Q254.1094,225.2344 253.4063,225.2344 Q250.9063,225.2344 249.5781,223.5938 Q248.2656,221.9375 248.2656,218.8125 Q248.2656,215.6875 249.5781,214.0313 Q250.9063,212.375 253.4063,212.375 Q254.1094,212.375 254.75,212.5313 Q255.4063,212.6875 255.9688,212.9844 L255.9688,215.7031 Q255.3438,215.125 254.75,214.8594 Q254.1563,214.5781 253.5313,214.5781 Q252.1875,214.5781 251.5,215.6563 Q250.8125,216.7188 250.8125,218.8125 Q250.8125,220.9063 251.5,221.9844 Q252.1875,223.0469 253.5313,223.0469 Q254.1563,223.0469 254.75,222.7813 Q255.3438,222.5 255.9688,221.9219 L255.9688,224.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="267" y="223.1543">C</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="18" x="283" y="200"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="16" x="284" y="212.1387">int</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="239" x2="297" y1="235" y2="235"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="239" x2="297" y1="243" y2="243"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L20" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L20" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f5i2gaj84zob)" height="99.2188" id="C_0000484712092364868032" style="stroke: #A80036; stroke-width: 1.5;" width="146" x="70" y="8"/>
<ellipse cx="134.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M137.7188,29.6406 Q137.1406,29.9375 136.5,30.0781 Q135.8594,30.2344 135.1563,30.2344 Q132.6563,30.2344 131.3281,28.5938 Q130.0156,26.9375 130.0156,23.8125 Q130.0156,20.6875 131.3281,19.0313 Q132.6563,17.375 135.1563,17.375 Q135.8594,17.375 136.5,17.5313 Q137.1563,17.6875 137.7188,17.9844 L137.7188,20.7031 Q137.0938,20.125 136.5,19.8594 Q135.9063,19.5781 135.2813,19.5781 Q133.9375,19.5781 133.25,20.6563 Q132.5625,21.7188 132.5625,23.8125 Q132.5625,25.9063 133.25,26.9844 Q133.9375,28.0469 135.2813,28.0469 Q135.9063,28.0469 136.5,27.7813 Q137.0938,27.5 137.7188,26.9219 L137.7188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="155.25" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="71" x2="215" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="71" x2="215" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L24" target="_top" title="@uml{style[#red,dashed,thickness=2]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L24" xlink:show="new" xlink:title="@uml{style[#red,dashed,thickness=2]}" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="76" y="46"/>
<ellipse cx="81" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L22" target="_top" title="aaa" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L22" xlink:show="new" xlink:title="aaa" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="76" y="54"/>
<ellipse cx="81" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L24" target="_top" title="@uml{style[#red,dashed,thickness=2]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L24" xlink:show="new" xlink:title="@uml{style[#red,dashed,thickness=2]}" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="50" x="90" y="54.2104">aaa : A *</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L22" target="_top" title="aaa" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L22" xlink:show="new" xlink:title="aaa" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="50" x="90" y="62.2104">aaa : A *</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L28" target="_top" title="@uml{composition} @uml{style[#green,dashed,thickness=4]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L28" xlink:show="new" xlink:title="@uml{composition} @uml{style[#green,dashed,thickness=4]}" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="76" y="58.8047"/>
<ellipse cx="81" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L26" target="_top" title="bbb" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L26" xlink:show="new" xlink:title="bbb" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="76" y="66.8047"/>
<ellipse cx="81" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L28" target="_top" title="@uml{composition} @uml{style[#green,dashed,thickness=4]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L28" xlink:show="new" xlink:title="@uml{composition} @uml{style[#green,dashed,thickness=4]}" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="120" x="90" y="67.0151">bbb : std::vector&lt;B&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L26" target="_top" title="bbb" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L26" xlink:show="new" xlink:title="bbb" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="120" x="90" y="75.0151">bbb : std::vector&lt;B&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L31" target="_top" title="@uml{style[#blue,dotted,thickness=8]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L31" xlink:show="new" xlink:title="@uml{style[#blue,dotted,thickness=8]}" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="76" y="71.6094"/>
<ellipse cx="81" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L29" target="_top" title="ccc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L29" xlink:show="new" xlink:title="ccc" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="76" y="79.6094"/>
<ellipse cx="81" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L31" target="_top" title="@uml{style[#blue,dotted,thickness=8]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L31" xlink:show="new" xlink:title="@uml{style[#blue,dotted,thickness=8]}" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="90" y="79.8198">ccc : C&lt;int&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L29" target="_top" title="ccc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L29" xlink:show="new" xlink:title="ccc" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="90" y="87.8198">ccc : C&lt;int&gt;</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L34" target="_top" title="@uml{style[#blue,plain,thickness=16]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L34" xlink:show="new" xlink:title="@uml{style[#blue,plain,thickness=16]}" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="76" y="84.4141"/>
<ellipse cx="81" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L32" target="_top" title="ddd" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L32" xlink:show="new" xlink:title="ddd" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="76" y="92.4141"/>
<ellipse cx="81" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L34" target="_top" title="@uml{style[#blue,plain,thickness=16]}" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00031/t00031.cc#L34" xlink:show="new" xlink:title="@uml{style[#blue,plain,thickness=16]}" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="51" x="90" y="92.6245">ddd : D *</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L32" target="_top" title="ddd" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00031/t00031.cc#L32" xlink:show="new" xlink:title="ddd" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="51" x="90" y="100.6245">ddd : D *</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="71" x2="215" y1="99.2188" y2="99.2188"/>
<path d="M268,251.08 C268,267.48 268,290.13 268,310.57 " fill="none" id="C_0000208700529175860645-&gt;C_0000116209144733282955" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="275,310.71,268,330.71,261,310.71,275,310.71" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M77.85,107.27 C68.57,116.36 59.87,126.38 53,137 C41.06,155.47 34.18,179.47 30.36,197.9 " fill="none" id="C_0000484712092364868032-&gt;C_0000847775539502907247" style="stroke: #FF0000; stroke-width: 2.0; stroke-dasharray: 7.0,7.0;"/>

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -24,11 +24,9 @@ File t00032.cc
namespace clanguml {
namespace t00032 {
struct Base {
};
struct Base { };
struct TBase {
};
struct TBase { };
struct A {
void operator()() { }
@@ -60,3 +58,411 @@ struct R {
```
## Generated UML diagrams
![t00032_class](./t00032_class.svg "Class template with template base classes test case")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00032::Base",
"id": "1619396229227632210",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "Base",
"namespace": "clanguml::t00032",
"source_location": {
"file": "../../tests/t00032/t00032.cc",
"line": 7
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00032::TBase",
"id": "543776954602127752",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "TBase",
"namespace": "clanguml::t00032",
"source_location": {
"file": "../../tests/t00032/t00032.cc",
"line": 9
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00032::A",
"id": "687909853333071234",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"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": true,
"is_pure_virtual": false,
"is_static": false,
"is_virtual": false,
"name": "operator()",
"parameters": [],
"type": "void"
}
],
"name": "A",
"namespace": "clanguml::t00032",
"source_location": {
"file": "../../tests/t00032/t00032.cc",
"line": 11
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00032::B",
"id": "737235057776029746",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"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": true,
"is_pure_virtual": false,
"is_static": false,
"is_virtual": false,
"name": "operator()",
"parameters": [],
"type": "void"
}
],
"name": "B",
"namespace": "clanguml::t00032",
"source_location": {
"file": "../../tests/t00032/t00032.cc",
"line": 15
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00032::C",
"id": "1497964256865073382",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"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": true,
"is_pure_virtual": false,
"is_static": false,
"is_virtual": false,
"name": "operator()",
"parameters": [],
"type": "void"
}
],
"name": "C",
"namespace": "clanguml::t00032",
"source_location": {
"file": "../../tests/t00032/t00032.cc",
"line": 19
},
"template_parameters": [],
"type": "class"
},
{
"bases": [
{
"access": "public",
"id": "1619396229227632210",
"is_virtual": false,
"name": "clanguml::t00032::Base"
}
],
"display_name": "clanguml::t00032::Overload<T,L,Ts...>",
"id": "1463422997970691679",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": true,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "counter",
"source_location": {
"file": "../../tests/t00032/t00032.cc",
"line": 26
},
"type": "L"
}
],
"methods": [],
"name": "Overload",
"namespace": "clanguml::t00032",
"source_location": {
"file": "../../tests/t00032/t00032.cc",
"line": 24
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
},
{
"is_variadic": false,
"kind": "template_type",
"name": "L",
"template_parameters": []
},
{
"is_variadic": true,
"kind": "template_type",
"name": "Ts...",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [
{
"access": "public",
"id": "543776954602127752",
"is_virtual": false,
"name": "clanguml::t00032::TBase"
},
{
"access": "public",
"id": "687909853333071234",
"is_virtual": false,
"name": "clanguml::t00032::A"
},
{
"access": "public",
"id": "737235057776029746",
"is_virtual": false,
"name": "clanguml::t00032::B"
},
{
"access": "public",
"id": "1497964256865073382",
"is_virtual": false,
"name": "clanguml::t00032::C"
}
],
"display_name": "clanguml::t00032::Overload<clanguml::t00032::TBase,int,clanguml::t00032::A,clanguml::t00032::B,clanguml::t00032::C>",
"id": "1706455047176879286",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "Overload",
"namespace": "clanguml::t00032",
"source_location": {
"file": "../../tests/t00032/t00032.cc",
"line": 24
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "clanguml::t00032::TBase"
},
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "int"
},
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "clanguml::t00032::A"
},
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "clanguml::t00032::B"
},
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "clanguml::t00032::C"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00032::R",
"id": "85539867332573320",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "overload",
"source_location": {
"file": "../../tests/t00032/t00032.cc",
"line": 32
},
"type": "Overload<clanguml::t00032::TBase,int,clanguml::t00032::A,clanguml::t00032::B,clanguml::t00032::C>"
}
],
"methods": [],
"name": "R",
"namespace": "clanguml::t00032",
"source_location": {
"file": "../../tests/t00032/t00032.cc",
"line": 31
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"schema_version": 1
},
"name": "t00032_class",
"relationships": [
{
"access": "public",
"destination": "1619396229227632210",
"source": "1463422997970691679",
"type": "extension"
},
{
"access": "public",
"destination": "543776954602127752",
"source": "1706455047176879286",
"type": "dependency"
},
{
"access": "public",
"destination": "687909853333071234",
"source": "1706455047176879286",
"type": "dependency"
},
{
"access": "public",
"destination": "737235057776029746",
"source": "1706455047176879286",
"type": "dependency"
},
{
"access": "public",
"destination": "1497964256865073382",
"source": "1706455047176879286",
"type": "dependency"
},
{
"access": "public",
"destination": "1463422997970691679",
"source": "1706455047176879286",
"type": "instantiation"
},
{
"access": "public",
"destination": "543776954602127752",
"source": "1706455047176879286",
"type": "extension"
},
{
"access": "public",
"destination": "687909853333071234",
"source": "1706455047176879286",
"type": "extension"
},
{
"access": "public",
"destination": "737235057776029746",
"source": "1706455047176879286",
"type": "extension"
},
{
"access": "public",
"destination": "1497964256865073382",
"source": "1706455047176879286",
"type": "extension"
},
{
"access": "public",
"destination": "1706455047176879286",
"label": "overload",
"source": "85539867332573320",
"type": "aggregation"
}
],
"using_namespace": "clanguml::t00032"
}
```

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="326px" preserveAspectRatio="none" style="width:743px;height:326px;" version="1.1" viewBox="0 0 743 326" width="743px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1tjhiys97h7ai" width="300%" x="-1" y="-1">
<filter height="300%" id="f15lgk77qboak" 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,92 +9,94 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L7" target="_top" title="Base" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L7" xlink:show="new" xlink:title="Base" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tjhiys97h7ai)" height="48" id="C_0001619396229227632210" style="stroke: #A80036; stroke-width: 1.5;" width="63" x="43.5" y="146"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L7" target="_top" title="Base" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L7" xlink:show="new" xlink:title="Base" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f15lgk77qboak)" height="48" id="C_0001619396229227632210" style="stroke: #A80036; stroke-width: 1.5;" width="63" x="43.5" y="146"/>
<ellipse cx="58.5" cy="162" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M61.4688,167.6406 Q60.8906,167.9375 60.25,168.0781 Q59.6094,168.2344 58.9063,168.2344 Q56.4063,168.2344 55.0781,166.5938 Q53.7656,164.9375 53.7656,161.8125 Q53.7656,158.6875 55.0781,157.0313 Q56.4063,155.375 58.9063,155.375 Q59.6094,155.375 60.25,155.5313 Q60.9063,155.6875 61.4688,155.9844 L61.4688,158.7031 Q60.8438,158.125 60.25,157.8594 Q59.6563,157.5781 59.0313,157.5781 Q57.6875,157.5781 57,158.6563 Q56.3125,159.7188 56.3125,161.8125 Q56.3125,163.9063 57,164.9844 Q57.6875,166.0469 59.0313,166.0469 Q59.6563,166.0469 60.25,165.7813 Q60.8438,165.5 61.4688,164.9219 L61.4688,167.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="31" x="72.5" y="166.1543">Base</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="44.5" x2="105.5" y1="178" y2="178"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="44.5" x2="105.5" y1="186" y2="186"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L10" target="_top" title="TBase" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L10" xlink:show="new" xlink:title="TBase" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tjhiys97h7ai)" height="48" id="C_0000543776954602127752" style="stroke: #A80036; stroke-width: 1.5;" width="70" x="179" y="261.5"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L9" target="_top" title="TBase" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L9" xlink:show="new" xlink:title="TBase" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f15lgk77qboak)" height="48" id="C_0000543776954602127752" style="stroke: #A80036; stroke-width: 1.5;" width="70" x="179" y="261.5"/>
<ellipse cx="194" cy="277.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M196.9688,283.1406 Q196.3906,283.4375 195.75,283.5781 Q195.1094,283.7344 194.4063,283.7344 Q191.9063,283.7344 190.5781,282.0938 Q189.2656,280.4375 189.2656,277.3125 Q189.2656,274.1875 190.5781,272.5313 Q191.9063,270.875 194.4063,270.875 Q195.1094,270.875 195.75,271.0313 Q196.4063,271.1875 196.9688,271.4844 L196.9688,274.2031 Q196.3438,273.625 195.75,273.3594 Q195.1563,273.0781 194.5313,273.0781 Q193.1875,273.0781 192.5,274.1563 Q191.8125,275.2188 191.8125,277.3125 Q191.8125,279.4063 192.5,280.4844 Q193.1875,281.5469 194.5313,281.5469 Q195.1563,281.5469 195.75,281.2813 Q196.3438,281 196.9688,280.4219 L196.9688,283.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="38" x="208" y="281.6543">TBase</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="180" x2="248" y1="293.5" y2="293.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="180" x2="248" y1="301.5" y2="301.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L13" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L13" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tjhiys97h7ai)" height="60.8047" id="C_0000687909853333071234" style="stroke: #A80036; stroke-width: 1.5;" width="126" x="284" y="255"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L11" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L11" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f15lgk77qboak)" height="60.8047" id="C_0000687909853333071234" style="stroke: #A80036; stroke-width: 1.5;" width="126" x="284" y="255"/>
<ellipse cx="338.75" cy="271" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M341.7188,276.6406 Q341.1406,276.9375 340.5,277.0781 Q339.8594,277.2344 339.1563,277.2344 Q336.6563,277.2344 335.3281,275.5938 Q334.0156,273.9375 334.0156,270.8125 Q334.0156,267.6875 335.3281,266.0313 Q336.6563,264.375 339.1563,264.375 Q339.8594,264.375 340.5,264.5313 Q341.1563,264.6875 341.7188,264.9844 L341.7188,267.7031 Q341.0938,267.125 340.5,266.8594 Q339.9063,266.5781 339.2813,266.5781 Q337.9375,266.5781 337.25,267.6563 Q336.5625,268.7188 336.5625,270.8125 Q336.5625,272.9063 337.25,273.9844 Q337.9375,275.0469 339.2813,275.0469 Q339.9063,275.0469 340.5,274.7813 Q341.0938,274.5 341.7188,273.9219 L341.7188,276.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="359.25" y="275.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="285" x2="409" y1="287" y2="287"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="285" x2="409" y1="295" y2="295"/>
<ellipse cx="295" cy="306" 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="100" x="304" y="309.2104">operator()() : void</text>
<ellipse cx="295" cy="298" 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="100" x="304" y="301.2104">operator()() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="285" x2="409" y1="307.8047" y2="307.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L17" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L17" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tjhiys97h7ai)" height="60.8047" id="C_0000737235057776029746" style="stroke: #A80036; stroke-width: 1.5;" width="126" x="445" y="255"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L15" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L15" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f15lgk77qboak)" height="60.8047" id="C_0000737235057776029746" style="stroke: #A80036; stroke-width: 1.5;" width="126" x="445" y="255"/>
<ellipse cx="499.75" cy="271" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M502.7188,276.6406 Q502.1406,276.9375 501.5,277.0781 Q500.8594,277.2344 500.1563,277.2344 Q497.6563,277.2344 496.3281,275.5938 Q495.0156,273.9375 495.0156,270.8125 Q495.0156,267.6875 496.3281,266.0313 Q497.6563,264.375 500.1563,264.375 Q500.8594,264.375 501.5,264.5313 Q502.1563,264.6875 502.7188,264.9844 L502.7188,267.7031 Q502.0938,267.125 501.5,266.8594 Q500.9063,266.5781 500.2813,266.5781 Q498.9375,266.5781 498.25,267.6563 Q497.5625,268.7188 497.5625,270.8125 Q497.5625,272.9063 498.25,273.9844 Q498.9375,275.0469 500.2813,275.0469 Q500.9063,275.0469 501.5,274.7813 Q502.0938,274.5 502.7188,273.9219 L502.7188,276.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="520.25" y="275.1543">B</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="446" x2="570" y1="287" y2="287"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="446" x2="570" y1="295" y2="295"/>
<ellipse cx="456" cy="306" 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="100" x="465" y="309.2104">operator()() : void</text>
<ellipse cx="456" cy="298" 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="100" x="465" y="301.2104">operator()() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="446" x2="570" y1="307.8047" y2="307.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L21" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L21" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tjhiys97h7ai)" height="60.8047" id="C_0001497964256865073382" style="stroke: #A80036; stroke-width: 1.5;" width="126" x="606" y="255"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L19" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L19" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f15lgk77qboak)" height="60.8047" id="C_0001497964256865073382" style="stroke: #A80036; stroke-width: 1.5;" width="126" x="606" y="255"/>
<ellipse cx="660.75" cy="271" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M663.7188,276.6406 Q663.1406,276.9375 662.5,277.0781 Q661.8594,277.2344 661.1563,277.2344 Q658.6563,277.2344 657.3281,275.5938 Q656.0156,273.9375 656.0156,270.8125 Q656.0156,267.6875 657.3281,266.0313 Q658.6563,264.375 661.1563,264.375 Q661.8594,264.375 662.5,264.5313 Q663.1563,264.6875 663.7188,264.9844 L663.7188,267.7031 Q663.0938,267.125 662.5,266.8594 Q661.9063,266.5781 661.2813,266.5781 Q659.9375,266.5781 659.25,267.6563 Q658.5625,268.7188 658.5625,270.8125 Q658.5625,272.9063 659.25,273.9844 Q659.9375,275.0469 661.2813,275.0469 Q661.9063,275.0469 662.5,274.7813 Q663.0938,274.5 663.7188,273.9219 L663.7188,276.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="681.25" y="275.1543">C</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="607" x2="731" y1="287" y2="287"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="607" x2="731" y1="295" y2="295"/>
<ellipse cx="617" cy="306" 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="100" x="626" y="309.2104">operator()() : void</text>
<ellipse cx="617" cy="298" 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="100" x="626" y="301.2104">operator()() : void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="607" x2="731" y1="307.8047" y2="307.8047"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L26" target="_top" title="Overload" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L26" xlink:show="new" xlink:title="Overload" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tjhiys97h7ai)" height="60.8047" id="C_0001463422997970691679" style="stroke: #A80036; stroke-width: 1.5;" width="138" x="6" y="255"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L24" target="_top" title="Overload" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L24" xlink:show="new" xlink:title="Overload" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f15lgk77qboak)" height="60.8047" id="C_0001463422997970691679" style="stroke: #A80036; stroke-width: 1.5;" width="138" x="6" y="255"/>
<ellipse cx="21" cy="271" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M23.9688,276.6406 Q23.3906,276.9375 22.75,277.0781 Q22.1094,277.2344 21.4063,277.2344 Q18.9063,277.2344 17.5781,275.5938 Q16.2656,273.9375 16.2656,270.8125 Q16.2656,267.6875 17.5781,266.0313 Q18.9063,264.375 21.4063,264.375 Q22.1094,264.375 22.75,264.5313 Q23.4063,264.6875 23.9688,264.9844 L23.9688,267.7031 Q23.3438,267.125 22.75,266.8594 Q22.1563,266.5781 21.5313,266.5781 Q20.1875,266.5781 19.5,267.6563 Q18.8125,268.7188 18.8125,270.8125 Q18.8125,272.9063 19.5,273.9844 Q20.1875,275.0469 21.5313,275.0469 Q22.1563,275.0469 22.75,274.7813 Q23.3438,274.5 23.9688,273.9219 L23.9688,276.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="55" x="35" y="275.1543">Overload</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="49" x="98" y="252"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="47" x="99" y="264.1387">T,L,Ts...</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="143" y1="287" y2="287"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="143" y1="295" y2="295"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L28" target="_top" title="counter" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L28" xlink:show="new" xlink:title="counter" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L26" target="_top" title="counter" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L26" xlink:show="new" xlink:title="counter" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L28" target="_top" title="counter" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L28" xlink:show="new" xlink:title="counter" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="61" x="26" y="301.2104">counter : L</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L26" target="_top" title="counter" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L26" xlink:show="new" xlink:title="counter" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="61" x="26" y="309.2104">counter : L</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="143" y1="307.8047" y2="307.8047"/>
<rect fill="#FEFECE" filter="url(#f1tjhiys97h7ai)" height="48" id="C_0001706455047176879286" style="stroke: #A80036; stroke-width: 1.5;" width="184" x="255" y="146"/>
<ellipse cx="270" cy="162" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M272.9688,167.6406 Q272.3906,167.9375 271.75,168.0781 Q271.1094,168.2344 270.4063,168.2344 Q267.9063,168.2344 266.5781,166.5938 Q265.2656,164.9375 265.2656,161.8125 Q265.2656,158.6875 266.5781,157.0313 Q267.9063,155.375 270.4063,155.375 Q271.1094,155.375 271.75,155.5313 Q272.4063,155.6875 272.9688,155.9844 L272.9688,158.7031 Q272.3438,158.125 271.75,157.8594 Q271.1563,157.5781 270.5313,157.5781 Q269.1875,157.5781 268.5,158.6563 Q267.8125,159.7188 267.8125,161.8125 Q267.8125,163.9063 268.5,164.9844 Q269.1875,166.0469 270.5313,166.0469 Q271.1563,166.0469 271.75,165.7813 Q272.3438,165.5 272.9688,164.9219 L272.9688,167.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="55" x="284" y="166.1543">Overload</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="95" x="347" y="143"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="93" x="348" y="155.1387">TBase,int,A,B,C</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="256" x2="438" y1="178" y2="178"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="256" x2="438" y1="186" y2="186"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L33" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L33" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1tjhiys97h7ai)" height="60.8047" id="C_0000085539867332573320" style="stroke: #A80036; stroke-width: 1.5;" width="245" x="224.5" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L24" target="_top" title="Overload" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L24" xlink:show="new" xlink:title="Overload" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f15lgk77qboak)" height="48" id="C_0001706455047176879286" style="stroke: #A80036; stroke-width: 1.5;" width="184" x="255" y="146"/>
<ellipse cx="270" cy="162" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M272.9688,167.6406 Q272.3906,167.9375 271.75,168.0781 Q271.1094,168.2344 270.4063,168.2344 Q267.9063,168.2344 266.5781,166.5938 Q265.2656,164.9375 265.2656,161.8125 Q265.2656,158.6875 266.5781,157.0313 Q267.9063,155.375 270.4063,155.375 Q271.1094,155.375 271.75,155.5313 Q272.4063,155.6875 272.9688,155.9844 L272.9688,158.7031 Q272.3438,158.125 271.75,157.8594 Q271.1563,157.5781 270.5313,157.5781 Q269.1875,157.5781 268.5,158.6563 Q267.8125,159.7188 267.8125,161.8125 Q267.8125,163.9063 268.5,164.9844 Q269.1875,166.0469 270.5313,166.0469 Q271.1563,166.0469 271.75,165.7813 Q272.3438,165.5 272.9688,164.9219 L272.9688,167.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="55" x="284" y="166.1543">Overload</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="95" x="347" y="143"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="93" x="348" y="155.1387">TBase,int,A,B,C</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="256" x2="438" y1="178" y2="178"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="256" x2="438" y1="186" y2="186"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L31" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L31" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f15lgk77qboak)" height="60.8047" id="C_0000085539867332573320" style="stroke: #A80036; stroke-width: 1.5;" width="245" x="224.5" y="8"/>
<ellipse cx="338.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M341.7188,29.6406 Q341.1406,29.9375 340.5,30.0781 Q339.8594,30.2344 339.1563,30.2344 Q336.6563,30.2344 335.3281,28.5938 Q334.0156,26.9375 334.0156,23.8125 Q334.0156,20.6875 335.3281,19.0313 Q336.6563,17.375 339.1563,17.375 Q339.8594,17.375 340.5,17.5313 Q341.1563,17.6875 341.7188,17.9844 L341.7188,20.7031 Q341.0938,20.125 340.5,19.8594 Q339.9063,19.5781 339.2813,19.5781 Q337.9375,19.5781 337.25,20.6563 Q336.5625,21.7188 336.5625,23.8125 Q336.5625,25.9063 337.25,26.9844 Q337.9375,28.0469 339.2813,28.0469 Q339.9063,28.0469 340.5,27.7813 Q341.0938,27.5 341.7188,26.9219 L341.7188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="359.25" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="225.5" x2="468.5" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="225.5" x2="468.5" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L34" target="_top" title="overload" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L34" xlink:show="new" xlink:title="overload" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="230.5" y="46"/>
<ellipse cx="235.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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L32" target="_top" title="overload" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L32" xlink:show="new" xlink:title="overload" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="230.5" y="54"/>
<ellipse cx="235.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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L34" target="_top" title="overload" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00032/t00032.cc#L34" xlink:show="new" xlink:title="overload" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="219" x="244.5" y="54.2104">overload : Overload&lt;TBase,int,A,B,C&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L32" target="_top" title="overload" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00032/t00032.cc#L32" xlink:show="new" xlink:title="overload" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="219" x="244.5" y="62.2104">overload : Overload&lt;TBase,int,A,B,C&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="225.5" x2="468.5" y1="60.8047" y2="60.8047"/>
<path d="M75,214.65 C75,228.08 75,242.54 75,254.81 " fill="none" id="C_0001619396229227632210&lt;-C_0001463422997970691679" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="none" points="68,214.24,75,194.24,82,214.24,68,214.24" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M309.24,194.24 C284.94,212.6 254.71,238.26 234.57,257.52 " fill="none" id="C_0001706455047176879286-&gt;C_0000543776954602127752" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -50,3 +50,355 @@ struct R {
```
## Generated UML diagrams
![t00033_class](./t00033_class.svg "Nested template instantiation dependency test case")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00033::A<T>",
"id": "2036031998980633871",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": true,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "aaa",
"source_location": {
"file": "../../tests/t00033/t00033.cc",
"line": 8
},
"type": "T"
}
],
"methods": [],
"name": "A",
"namespace": "clanguml::t00033",
"source_location": {
"file": "../../tests/t00033/t00033.cc",
"line": 7
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00033::B<T>",
"id": "765515233845859023",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": true,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "bbb",
"source_location": {
"file": "../../tests/t00033/t00033.cc",
"line": 12
},
"type": "T"
}
],
"methods": [],
"name": "B",
"namespace": "clanguml::t00033",
"source_location": {
"file": "../../tests/t00033/t00033.cc",
"line": 11
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00033::C<T>",
"id": "1436835384265552869",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": true,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "ccc",
"source_location": {
"file": "../../tests/t00033/t00033.cc",
"line": 16
},
"type": "T"
}
],
"methods": [],
"name": "C",
"namespace": "clanguml::t00033",
"source_location": {
"file": "../../tests/t00033/t00033.cc",
"line": 15
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00033::D",
"id": "2199581366769423637",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "ddd",
"source_location": {
"file": "../../tests/t00033/t00033.cc",
"line": 20
},
"type": "int"
}
],
"methods": [],
"name": "D",
"namespace": "clanguml::t00033",
"source_location": {
"file": "../../tests/t00033/t00033.cc",
"line": 19
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00033::C<clanguml::t00033::D>",
"id": "1609446044604054241",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "C",
"namespace": "clanguml::t00033",
"source_location": {
"file": "../../../../../../usr/include/c++/12/bits/unique_ptr.h",
"line": 269
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "clanguml::t00033::D"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00033::B<std::unique_ptr<clanguml::t00033::C<clanguml::t00033::D>>>",
"id": "384927316081978893",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "B",
"namespace": "clanguml::t00033",
"source_location": {
"file": "../../tests/t00033/t00033.cc",
"line": 7
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "clanguml::t00033::D"
}
],
"type": "clanguml::t00033::C"
}
],
"type": "std::unique_ptr"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00033::A<clanguml::t00033::B<std::unique_ptr<clanguml::t00033::C<clanguml::t00033::D>>>>",
"id": "1747493965420341251",
"is_abstract": false,
"is_nested": false,
"is_struct": false,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "A",
"namespace": "clanguml::t00033",
"source_location": {
"file": "../../tests/t00033/t00033.cc",
"line": 7
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "clanguml::t00033::D"
}
],
"type": "clanguml::t00033::C"
}
],
"type": "std::unique_ptr"
}
],
"type": "clanguml::t00033::B"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00033::R",
"id": "1866392706312766470",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "abc",
"source_location": {
"file": "../../tests/t00033/t00033.cc",
"line": 24
},
"type": "A<B<std::unique_ptr<C<D>>>>"
}
],
"methods": [],
"name": "R",
"namespace": "clanguml::t00033",
"source_location": {
"file": "../../tests/t00033/t00033.cc",
"line": 23
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"schema_version": 1
},
"name": "t00033_class",
"relationships": [
{
"access": "public",
"destination": "2199581366769423637",
"source": "1609446044604054241",
"type": "dependency"
},
{
"access": "public",
"destination": "1436835384265552869",
"source": "1609446044604054241",
"type": "instantiation"
},
{
"access": "public",
"destination": "1609446044604054241",
"source": "384927316081978893",
"type": "dependency"
},
{
"access": "public",
"destination": "765515233845859023",
"source": "384927316081978893",
"type": "instantiation"
},
{
"access": "public",
"destination": "384927316081978893",
"source": "1747493965420341251",
"type": "dependency"
},
{
"access": "public",
"destination": "2036031998980633871",
"source": "1747493965420341251",
"type": "instantiation"
},
{
"access": "public",
"destination": "1747493965420341251",
"label": "abc",
"source": "1866392706312766470",
"type": "aggregation"
}
],
"using_namespace": "clanguml::t00033"
}
```

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="570px" preserveAspectRatio="none" style="width:435px;height:570px;" version="1.1" viewBox="0 0 435 570" width="435px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="ful9yn2zjfhx3" width="300%" x="-1" y="-1">
<filter height="300%" id="ff27gbom8lurb" 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,111 +9,117 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ful9yn2zjfhx3)" height="60.8047" id="C_0002036031998980633871" style="stroke: #A80036; stroke-width: 1.5;" width="66" x="76.5" y="255"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ff27gbom8lurb)" height="60.8047" id="C_0002036031998980633871" style="stroke: #A80036; stroke-width: 1.5;" width="66" x="76.5" y="255"/>
<ellipse cx="98.25" cy="271" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M101.2188,276.6406 Q100.6406,276.9375 100,277.0781 Q99.3594,277.2344 98.6563,277.2344 Q96.1563,277.2344 94.8281,275.5938 Q93.5156,273.9375 93.5156,270.8125 Q93.5156,267.6875 94.8281,266.0313 Q96.1563,264.375 98.6563,264.375 Q99.3594,264.375 100,264.5313 Q100.6563,264.6875 101.2188,264.9844 L101.2188,267.7031 Q100.5938,267.125 100,266.8594 Q99.4063,266.5781 98.7813,266.5781 Q97.4375,266.5781 96.75,267.6563 Q96.0625,268.7188 96.0625,270.8125 Q96.0625,272.9063 96.75,273.9844 Q97.4375,275.0469 98.7813,275.0469 Q99.4063,275.0469 100,274.7813 Q100.5938,274.5 101.2188,273.9219 L101.2188,276.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="113.75" y="275.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="136.5" y="252"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="137.5" y="264.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="77.5" x2="141.5" y1="287" y2="287"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="77.5" x2="141.5" y1="295" y2="295"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L8" target="_top" title="aaa" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L8" xlink:show="new" xlink:title="aaa" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="82.5" y="293"/>
<ellipse cx="87.5" cy="298" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L8" target="_top" title="aaa" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L8" xlink:show="new" xlink:title="aaa" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="82.5" y="301"/>
<ellipse cx="87.5" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L8" target="_top" title="aaa" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L8" xlink:show="new" xlink:title="aaa" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="40" x="96.5" y="301.2104">aaa : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L8" target="_top" title="aaa" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L8" xlink:show="new" xlink:title="aaa" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="40" x="96.5" y="309.2104">aaa : T</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="77.5" x2="141.5" y1="307.8047" y2="307.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L11" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L11" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ful9yn2zjfhx3)" height="60.8047" id="C_0000765515233845859023" style="stroke: #A80036; stroke-width: 1.5;" width="66" x="208.5" y="377"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L11" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L11" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ff27gbom8lurb)" height="60.8047" id="C_0000765515233845859023" style="stroke: #A80036; stroke-width: 1.5;" width="66" x="208.5" y="377"/>
<ellipse cx="230.25" cy="393" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M233.2188,398.6406 Q232.6406,398.9375 232,399.0781 Q231.3594,399.2344 230.6563,399.2344 Q228.1563,399.2344 226.8281,397.5938 Q225.5156,395.9375 225.5156,392.8125 Q225.5156,389.6875 226.8281,388.0313 Q228.1563,386.375 230.6563,386.375 Q231.3594,386.375 232,386.5313 Q232.6563,386.6875 233.2188,386.9844 L233.2188,389.7031 Q232.5938,389.125 232,388.8594 Q231.4063,388.5781 230.7813,388.5781 Q229.4375,388.5781 228.75,389.6563 Q228.0625,390.7188 228.0625,392.8125 Q228.0625,394.9063 228.75,395.9844 Q229.4375,397.0469 230.7813,397.0469 Q231.4063,397.0469 232,396.7813 Q232.5938,396.5 233.2188,395.9219 L233.2188,398.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="245.75" y="397.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="268.5" y="374"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="269.5" y="386.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="209.5" x2="273.5" y1="409" y2="409"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="209.5" x2="273.5" y1="417" y2="417"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L12" target="_top" title="bbb" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L12" xlink:show="new" xlink:title="bbb" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="214.5" y="415"/>
<ellipse cx="219.5" cy="420" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L12" target="_top" title="bbb" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L12" xlink:show="new" xlink:title="bbb" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="214.5" y="423"/>
<ellipse cx="219.5" cy="428" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L12" target="_top" title="bbb" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L12" xlink:show="new" xlink:title="bbb" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="40" x="228.5" y="423.2104">bbb : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L12" target="_top" title="bbb" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L12" xlink:show="new" xlink:title="bbb" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="40" x="228.5" y="431.2104">bbb : T</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="209.5" x2="273.5" y1="429.8047" y2="429.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L15" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L15" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ful9yn2zjfhx3)" height="60.8047" id="C_0001436835384265552869" style="stroke: #A80036; stroke-width: 1.5;" width="63" x="253" y="499"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L15" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L15" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ff27gbom8lurb)" height="60.8047" id="C_0001436835384265552869" style="stroke: #A80036; stroke-width: 1.5;" width="63" x="253" y="499"/>
<ellipse cx="273.4" cy="515" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M276.3688,520.6406 Q275.7906,520.9375 275.15,521.0781 Q274.5094,521.2344 273.8063,521.2344 Q271.3063,521.2344 269.9781,519.5938 Q268.6656,517.9375 268.6656,514.8125 Q268.6656,511.6875 269.9781,510.0313 Q271.3063,508.375 273.8063,508.375 Q274.5094,508.375 275.15,508.5313 Q275.8063,508.6875 276.3688,508.9844 L276.3688,511.7031 Q275.7438,511.125 275.15,510.8594 Q274.5563,510.5781 273.9313,510.5781 Q272.5875,510.5781 271.9,511.6563 Q271.2125,512.7188 271.2125,514.8125 Q271.2125,516.9063 271.9,517.9844 Q272.5875,519.0469 273.9313,519.0469 Q274.5563,519.0469 275.15,518.7813 Q275.7438,518.5 276.3688,517.9219 L276.3688,520.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="288.6" y="519.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="310" y="496"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="311" y="508.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="254" x2="315" y1="531" y2="531"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="254" x2="315" y1="539" y2="539"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L16" target="_top" title="ccc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L16" xlink:show="new" xlink:title="ccc" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="259" y="537"/>
<ellipse cx="264" cy="542" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L16" target="_top" title="ccc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L16" xlink:show="new" xlink:title="ccc" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="259" y="545"/>
<ellipse cx="264" cy="550" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L16" target="_top" title="ccc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L16" xlink:show="new" xlink:title="ccc" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="37" x="273" y="545.2104">ccc : T</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L16" target="_top" title="ccc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L16" xlink:show="new" xlink:title="ccc" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="37" x="273" y="553.2104">ccc : T</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="254" x2="315" y1="551.8047" y2="551.8047"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L19" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L19" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ful9yn2zjfhx3)" height="60.8047" id="C_0002199581366769423637" style="stroke: #A80036; stroke-width: 1.5;" width="73" x="351" y="499"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L19" target="_top" title="D" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L19" xlink:show="new" xlink:title="D" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ff27gbom8lurb)" height="60.8047" id="C_0002199581366769423637" style="stroke: #A80036; stroke-width: 1.5;" width="73" x="351" y="499"/>
<ellipse cx="380.4" cy="515" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M383.3688,520.6406 Q382.7906,520.9375 382.15,521.0781 Q381.5094,521.2344 380.8063,521.2344 Q378.3063,521.2344 376.9781,519.5938 Q375.6656,517.9375 375.6656,514.8125 Q375.6656,511.6875 376.9781,510.0313 Q378.3063,508.375 380.8063,508.375 Q381.5094,508.375 382.15,508.5313 Q382.8063,508.6875 383.3688,508.9844 L383.3688,511.7031 Q382.7438,511.125 382.15,510.8594 Q381.5563,510.5781 380.9313,510.5781 Q379.5875,510.5781 378.9,511.6563 Q378.2125,512.7188 378.2125,514.8125 Q378.2125,516.9063 378.9,517.9844 Q379.5875,519.0469 380.9313,519.0469 Q381.5563,519.0469 382.15,518.7813 Q382.7438,518.5 383.3688,517.9219 L383.3688,520.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="9" x="397.6" y="519.1543">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="352" x2="423" y1="531" y2="531"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="352" x2="423" y1="539" y2="539"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L20" target="_top" title="ddd" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L20" xlink:show="new" xlink:title="ddd" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="357" y="537"/>
<ellipse cx="362" cy="542" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L20" target="_top" title="ddd" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L20" xlink:show="new" xlink:title="ddd" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="357" y="545"/>
<ellipse cx="362" cy="550" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L20" target="_top" title="ddd" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L20" xlink:show="new" xlink:title="ddd" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="47" x="371" y="545.2104">ddd : int</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L20" target="_top" title="ddd" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L20" xlink:show="new" xlink:title="ddd" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="47" x="371" y="553.2104">ddd : int</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="352" x2="423" y1="551.8047" y2="551.8047"/>
<rect fill="#FEFECE" filter="url(#ful9yn2zjfhx3)" height="48" id="C_0001609446044604054241" style="stroke: #A80036; stroke-width: 1.5;" width="53" x="310" y="383.5"/>
<ellipse cx="325" cy="399.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M327.9688,405.1406 Q327.3906,405.4375 326.75,405.5781 Q326.1094,405.7344 325.4063,405.7344 Q322.9063,405.7344 321.5781,404.0938 Q320.2656,402.4375 320.2656,399.3125 Q320.2656,396.1875 321.5781,394.5313 Q322.9063,392.875 325.4063,392.875 Q326.1094,392.875 326.75,393.0313 Q327.4063,393.1875 327.9688,393.4844 L327.9688,396.2031 Q327.3438,395.625 326.75,395.3594 Q326.1563,395.0781 325.5313,395.0781 Q324.1875,395.0781 323.5,396.1563 Q322.8125,397.2188 322.8125,399.3125 Q322.8125,401.4063 323.5,402.4844 Q324.1875,403.5469 325.5313,403.5469 Q326.1563,403.5469 326.75,403.2813 Q327.3438,403 327.9688,402.4219 L327.9688,405.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="339" y="403.6543">C</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="11" x="355" y="380.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="9" x="356" y="392.6387">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="311" x2="362" y1="415.5" y2="415.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="311" x2="362" y1="423.5" y2="423.5"/>
<rect fill="#FEFECE" filter="url(#ful9yn2zjfhx3)" height="48" id="C_0000384927316081978893" style="stroke: #A80036; stroke-width: 1.5;" width="195" x="178" y="261.5"/>
<ellipse cx="193" cy="277.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M195.9688,283.1406 Q195.3906,283.4375 194.75,283.5781 Q194.1094,283.7344 193.4063,283.7344 Q190.9063,283.7344 189.5781,282.0938 Q188.2656,280.4375 188.2656,277.3125 Q188.2656,274.1875 189.5781,272.5313 Q190.9063,270.875 193.4063,270.875 Q194.1094,270.875 194.75,271.0313 Q195.4063,271.1875 195.9688,271.4844 L195.9688,274.2031 Q195.3438,273.625 194.75,273.3594 Q194.1563,273.0781 193.5313,273.0781 Q192.1875,273.0781 191.5,274.1563 Q190.8125,275.2188 190.8125,277.3125 Q190.8125,279.4063 191.5,280.4844 Q192.1875,281.5469 193.5313,281.5469 Q194.1563,281.5469 194.75,281.2813 Q195.3438,281 195.9688,280.4219 L195.9688,283.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="207" y="281.6543">B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="153" x="223" y="258.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="151" x="224" y="270.6387">std::unique_ptr&lt;C&lt;D&gt;&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="179" x2="372" y1="293.5" y2="293.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="179" x2="372" y1="301.5" y2="301.5"/>
<rect fill="#FEFECE" filter="url(#ful9yn2zjfhx3)" height="48" id="C_0001747493965420341251" style="stroke: #A80036; stroke-width: 1.5;" width="223" x="18" y="146"/>
<ellipse cx="33" cy="162" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M35.9688,167.6406 Q35.3906,167.9375 34.75,168.0781 Q34.1094,168.2344 33.4063,168.2344 Q30.9063,168.2344 29.5781,166.5938 Q28.2656,164.9375 28.2656,161.8125 Q28.2656,158.6875 29.5781,157.0313 Q30.9063,155.375 33.4063,155.375 Q34.1094,155.375 34.75,155.5313 Q35.4063,155.6875 35.9688,155.9844 L35.9688,158.7031 Q35.3438,158.125 34.75,157.8594 Q34.1563,157.5781 33.5313,157.5781 Q32.1875,157.5781 31.5,158.6563 Q30.8125,159.7188 30.8125,161.8125 Q30.8125,163.9063 31.5,164.9844 Q32.1875,166.0469 33.5313,166.0469 Q34.1563,166.0469 34.75,165.7813 Q35.3438,165.5 35.9688,164.9219 L35.9688,167.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="47" y="166.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="181" x="63" y="143"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="179" x="64" y="155.1387">B&lt;std::unique_ptr&lt;C&lt;D&gt;&gt;&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="19" x2="240" y1="178" y2="178"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="19" x2="240" y1="186" y2="186"/>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L23" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L23" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ful9yn2zjfhx3)" height="60.8047" id="C_0001866392706312766470" style="stroke: #A80036; stroke-width: 1.5;" width="247" x="6" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/../../../../usr/include/c++/12/bits/unique_ptr.h#L269" target="_top" title="C" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/../../../../usr/include/c++/12/bits/unique_ptr.h#L269" xlink:show="new" xlink:title="C" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ff27gbom8lurb)" height="48" id="C_0001609446044604054241" style="stroke: #A80036; stroke-width: 1.5;" width="53" x="310" y="383.5"/>
<ellipse cx="325" cy="399.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M327.9688,405.1406 Q327.3906,405.4375 326.75,405.5781 Q326.1094,405.7344 325.4063,405.7344 Q322.9063,405.7344 321.5781,404.0938 Q320.2656,402.4375 320.2656,399.3125 Q320.2656,396.1875 321.5781,394.5313 Q322.9063,392.875 325.4063,392.875 Q326.1094,392.875 326.75,393.0313 Q327.4063,393.1875 327.9688,393.4844 L327.9688,396.2031 Q327.3438,395.625 326.75,395.3594 Q326.1563,395.0781 325.5313,395.0781 Q324.1875,395.0781 323.5,396.1563 Q322.8125,397.2188 322.8125,399.3125 Q322.8125,401.4063 323.5,402.4844 Q324.1875,403.5469 325.5313,403.5469 Q326.1563,403.5469 326.75,403.2813 Q327.3438,403 327.9688,402.4219 L327.9688,405.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="339" y="403.6543">C</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="11" x="355" y="380.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="9" x="356" y="392.6387">D</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="311" x2="362" y1="415.5" y2="415.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="311" x2="362" y1="423.5" y2="423.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L7" target="_top" title="B" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L7" xlink:show="new" xlink:title="B" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ff27gbom8lurb)" height="48" id="C_0000384927316081978893" style="stroke: #A80036; stroke-width: 1.5;" width="195" x="178" y="261.5"/>
<ellipse cx="193" cy="277.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M195.9688,283.1406 Q195.3906,283.4375 194.75,283.5781 Q194.1094,283.7344 193.4063,283.7344 Q190.9063,283.7344 189.5781,282.0938 Q188.2656,280.4375 188.2656,277.3125 Q188.2656,274.1875 189.5781,272.5313 Q190.9063,270.875 193.4063,270.875 Q194.1094,270.875 194.75,271.0313 Q195.4063,271.1875 195.9688,271.4844 L195.9688,274.2031 Q195.3438,273.625 194.75,273.3594 Q194.1563,273.0781 193.5313,273.0781 Q192.1875,273.0781 191.5,274.1563 Q190.8125,275.2188 190.8125,277.3125 Q190.8125,279.4063 191.5,280.4844 Q192.1875,281.5469 193.5313,281.5469 Q194.1563,281.5469 194.75,281.2813 Q195.3438,281 195.9688,280.4219 L195.9688,283.1406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="207" y="281.6543">B</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="153" x="223" y="258.5"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="151" x="224" y="270.6387">std::unique_ptr&lt;C&lt;D&gt;&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="179" x2="372" y1="293.5" y2="293.5"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="179" x2="372" y1="301.5" y2="301.5"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L7" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L7" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ff27gbom8lurb)" height="48" id="C_0001747493965420341251" style="stroke: #A80036; stroke-width: 1.5;" width="223" x="18" y="146"/>
<ellipse cx="33" cy="162" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M35.9688,167.6406 Q35.3906,167.9375 34.75,168.0781 Q34.1094,168.2344 33.4063,168.2344 Q30.9063,168.2344 29.5781,166.5938 Q28.2656,164.9375 28.2656,161.8125 Q28.2656,158.6875 29.5781,157.0313 Q30.9063,155.375 33.4063,155.375 Q34.1094,155.375 34.75,155.5313 Q35.4063,155.6875 35.9688,155.9844 L35.9688,158.7031 Q35.3438,158.125 34.75,157.8594 Q34.1563,157.5781 33.5313,157.5781 Q32.1875,157.5781 31.5,158.6563 Q30.8125,159.7188 30.8125,161.8125 Q30.8125,163.9063 31.5,164.9844 Q32.1875,166.0469 33.5313,166.0469 Q34.1563,166.0469 34.75,165.7813 Q35.3438,165.5 35.9688,164.9219 L35.9688,167.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="47" y="166.1543">A</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="181" x="63" y="143"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="179" x="64" y="155.1387">B&lt;std::unique_ptr&lt;C&lt;D&gt;&gt;&gt;</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="19" x2="240" y1="178" y2="178"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="19" x2="240" y1="186" y2="186"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L23" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L23" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#ff27gbom8lurb)" height="60.8047" id="C_0001866392706312766470" style="stroke: #A80036; stroke-width: 1.5;" width="247" x="6" y="8"/>
<ellipse cx="121.25" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M124.2188,29.6406 Q123.6406,29.9375 123,30.0781 Q122.3594,30.2344 121.6563,30.2344 Q119.1563,30.2344 117.8281,28.5938 Q116.5156,26.9375 116.5156,23.8125 Q116.5156,20.6875 117.8281,19.0313 Q119.1563,17.375 121.6563,17.375 Q122.3594,17.375 123,17.5313 Q123.6563,17.6875 124.2188,17.9844 L124.2188,20.7031 Q123.5938,20.125 123,19.8594 Q122.4063,19.5781 121.7813,19.5781 Q120.4375,19.5781 119.75,20.6563 Q119.0625,21.7188 119.0625,23.8125 Q119.0625,25.9063 119.75,26.9844 Q120.4375,28.0469 121.7813,28.0469 Q122.4063,28.0469 123,27.7813 Q123.5938,27.5 124.2188,26.9219 L124.2188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="141.75" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="252" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="252" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L24" target="_top" title="abc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L24" xlink:show="new" xlink:title="abc" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L24" target="_top" title="abc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L24" xlink:show="new" xlink:title="abc" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L24" target="_top" title="abc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00033/t00033.cc#L24" xlink:show="new" xlink:title="abc" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="221" x="26" y="54.2104">abc : A&lt;B&lt;std::unique_ptr&lt;C&lt;D&gt;&gt;&gt;&gt;</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L24" target="_top" title="abc" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00033/t00033.cc#L24" xlink:show="new" xlink:title="abc" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="221" x="26" y="62.2104">abc : A&lt;B&lt;std::unique_ptr&lt;C&lt;D&gt;&gt;&gt;&gt;</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="252" y1="60.8047" y2="60.8047"/>
<path d="M346.33,431.64 C353.84,449.29 364.29,473.9 372.79,493.89 " fill="none" id="C_0001609446044604054241-&gt;C_0002199581366769423637" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="374.79,498.61,374.9472,488.7624,372.8325,494.0091,367.5858,491.8944,374.79,498.61" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M326.47,431.64 C320.5,445.42 312.69,463.44 305.44,480.19 " fill="none" id="C_0001609446044604054241-&gt;C_0001436835384265552869" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -63,8 +63,7 @@ template <> struct drop_void<Void> {
template <typename T> using drop_void_t = typename drop_void<T>::type;
struct A {
};
struct A { };
struct R {
lift_void_t<A> *la;
@@ -77,3 +76,283 @@ struct R {
```
## Generated UML diagrams
![t00034_class](./t00034_class.svg "Template metaprogramming type function test case")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00034::Void",
"id": "1704456490210873213",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [],
"methods": [
{
"access": "public",
"is_const": true,
"is_consteval": false,
"is_constexpr": true,
"is_constructor": false,
"is_copy_assignment": false,
"is_defaulted": false,
"is_deleted": false,
"is_move_assignment": false,
"is_noexcept": false,
"is_operator": true,
"is_pure_virtual": false,
"is_static": false,
"is_virtual": false,
"name": "operator==",
"parameters": [
{
"name": "",
"type": "const clanguml::t00034::Void &"
}
],
"type": "bool"
},
{
"access": "public",
"is_const": true,
"is_consteval": false,
"is_constexpr": true,
"is_constructor": false,
"is_copy_assignment": false,
"is_defaulted": false,
"is_deleted": false,
"is_move_assignment": false,
"is_noexcept": false,
"is_operator": true,
"is_pure_virtual": false,
"is_static": false,
"is_virtual": false,
"name": "operator!=",
"parameters": [
{
"name": "",
"type": "const clanguml::t00034::Void &"
}
],
"type": "bool"
}
],
"name": "Void",
"namespace": "clanguml::t00034",
"source_location": {
"file": "../../tests/t00034/t00034.cc",
"line": 9
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00034::lift_void<T>",
"id": "867472442996685316",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "lift_void",
"namespace": "clanguml::t00034",
"source_location": {
"file": "../../tests/t00034/t00034.cc",
"line": 16
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00034::lift_void<void>",
"id": "126450862226197239",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "lift_void",
"namespace": "clanguml::t00034",
"source_location": {
"file": "../../tests/t00034/t00034.cc",
"line": 20
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "void"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00034::drop_void<T>",
"id": "1578745816100337706",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "drop_void",
"namespace": "clanguml::t00034",
"source_location": {
"file": "../../tests/t00034/t00034.cc",
"line": 33
},
"template_parameters": [
{
"is_variadic": false,
"kind": "template_type",
"name": "T",
"template_parameters": []
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00034::drop_void<clanguml::t00034::Void>",
"id": "1849836134504075115",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": true,
"is_union": false,
"members": [],
"methods": [],
"name": "drop_void",
"namespace": "clanguml::t00034",
"source_location": {
"file": "../../tests/t00034/t00034.cc",
"line": 37
},
"template_parameters": [
{
"is_variadic": false,
"kind": "argument",
"template_parameters": [],
"type": "clanguml::t00034::Void"
}
],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00034::A",
"id": "1383912907884688827",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "A",
"namespace": "clanguml::t00034",
"source_location": {
"file": "../../tests/t00034/t00034.cc",
"line": 43
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00034::R",
"id": "1713991735741265309",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [
{
"access": "public",
"is_static": false,
"name": "la",
"source_location": {
"file": "../../tests/t00034/t00034.cc",
"line": 46
},
"type": "lift_void_t<clanguml::t00034::A> *"
},
{
"access": "public",
"is_static": false,
"name": "lv",
"source_location": {
"file": "../../tests/t00034/t00034.cc",
"line": 47
},
"type": "lift_void_t<void> *"
}
],
"methods": [],
"name": "R",
"namespace": "clanguml::t00034",
"source_location": {
"file": "../../tests/t00034/t00034.cc",
"line": 45
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"schema_version": 1
},
"name": "t00034_class",
"relationships": [
{
"access": "public",
"destination": "867472442996685316",
"source": "126450862226197239",
"type": "instantiation"
},
{
"access": "public",
"destination": "1704456490210873213",
"source": "1849836134504075115",
"type": "dependency"
},
{
"access": "public",
"destination": "1578745816100337706",
"source": "1849836134504075115",
"type": "instantiation"
},
{
"access": "public",
"destination": "1383912907884688827",
"label": "la",
"source": "1713991735741265309",
"type": "association"
}
],
"using_namespace": "clanguml::t00034"
}
```

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="243px" preserveAspectRatio="none" style="width:680px;height:243px;" version="1.1" viewBox="0 0 680 243" width="680px" 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="243px" preserveAspectRatio="none" style="width:788px;height:243px;" version="1.1" viewBox="0 0 788 243" width="788px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="fuj92rewlwquc" width="300%" x="-1" y="-1">
<filter height="300%" id="f1bmmubzfoadqm" 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,103 +9,101 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L9" target="_top" title="Void" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L9" xlink:show="new" xlink:title="Void" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuj92rewlwquc)" height="73.6094" id="C_0001704456490210873213" style="stroke: #A80036; stroke-width: 1.5;" width="293" x="6" y="159"/>
<ellipse cx="134.75" cy="175" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M137.7188,180.6406 Q137.1406,180.9375 136.5,181.0781 Q135.8594,181.2344 135.1563,181.2344 Q132.6563,181.2344 131.3281,179.5938 Q130.0156,177.9375 130.0156,174.8125 Q130.0156,171.6875 131.3281,170.0313 Q132.6563,168.375 135.1563,168.375 Q135.8594,168.375 136.5,168.5313 Q137.1563,168.6875 137.7188,168.9844 L137.7188,171.7031 Q137.0938,171.125 136.5,170.8594 Q135.9063,170.5781 135.2813,170.5781 Q133.9375,170.5781 133.25,171.6563 Q132.5625,172.7188 132.5625,174.8125 Q132.5625,176.9063 133.25,177.9844 Q133.9375,179.0469 135.2813,179.0469 Q135.9063,179.0469 136.5,178.7813 Q137.0938,178.5 137.7188,177.9219 L137.7188,180.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="27" x="155.25" y="179.1543">Void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="298" y1="191" y2="191"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="298" y1="199" y2="199"/>
<ellipse cx="17" cy="210" 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="267" x="26" y="213.2104">operator==(const struct Void &amp; ) const : _Bool</text>
<ellipse cx="17" cy="222.8047" 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="261" x="26" y="226.0151">operator!=(const struct Void &amp; ) const : _Bool</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L9" target="_top" title="Void" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L9" xlink:show="new" xlink:title="Void" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1bmmubzfoadqm)" height="73.6094" id="C_0001704456490210873213" style="stroke: #A80036; stroke-width: 1.5;" width="305" x="6" y="159"/>
<ellipse cx="140.75" cy="175" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M143.7188,180.6406 Q143.1406,180.9375 142.5,181.0781 Q141.8594,181.2344 141.1563,181.2344 Q138.6563,181.2344 137.3281,179.5938 Q136.0156,177.9375 136.0156,174.8125 Q136.0156,171.6875 137.3281,170.0313 Q138.6563,168.375 141.1563,168.375 Q141.8594,168.375 142.5,168.5313 Q143.1563,168.6875 143.7188,168.9844 L143.7188,171.7031 Q143.0938,171.125 142.5,170.8594 Q141.9063,170.5781 141.2813,170.5781 Q139.9375,170.5781 139.25,171.6563 Q138.5625,172.7188 138.5625,174.8125 Q138.5625,176.9063 139.25,177.9844 Q139.9375,179.0469 141.2813,179.0469 Q141.9063,179.0469 142.5,178.7813 Q143.0938,178.5 143.7188,177.9219 L143.7188,180.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="27" x="161.25" y="179.1543">Void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="310" y1="191" y2="191"/>
<ellipse cx="17" cy="202" 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="273" x="26" y="205.2104">operator!=(const Void &amp;) constexpr const : bool</text>
<ellipse cx="17" cy="214.8047" 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="279" x="26" y="218.0151">operator==(const Void &amp;) constexpr const : bool</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="310" y1="224.6094" y2="224.6094"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L16" target="_top" title="lift_void" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L16" xlink:show="new" xlink:title="lift_void" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuj92rewlwquc)" height="48" id="C_0000867472442996685316" style="stroke: #A80036; stroke-width: 1.5;" width="89" x="410" y="172"/>
<ellipse cx="425" cy="188" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M427.9688,193.6406 Q427.3906,193.9375 426.75,194.0781 Q426.1094,194.2344 425.4063,194.2344 Q422.9063,194.2344 421.5781,192.5938 Q420.2656,190.9375 420.2656,187.8125 Q420.2656,184.6875 421.5781,183.0313 Q422.9063,181.375 425.4063,181.375 Q426.1094,181.375 426.75,181.5313 Q427.4063,181.6875 427.9688,181.9844 L427.9688,184.7031 Q427.3438,184.125 426.75,183.8594 Q426.1563,183.5781 425.5313,183.5781 Q424.1875,183.5781 423.5,184.6563 Q422.8125,185.7188 422.8125,187.8125 Q422.8125,189.9063 423.5,190.9844 Q424.1875,192.0469 425.5313,192.0469 Q426.1563,192.0469 426.75,191.7813 Q427.3438,191.5 427.9688,190.9219 L427.9688,193.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="46" x="439" y="192.1543">lift_void</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="493" y="169"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="494" y="181.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="411" x2="498" y1="204" y2="204"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="411" x2="498" y1="212" y2="212"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L16" target="_top" title="lift_void" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L16" xlink:show="new" xlink:title="lift_void" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1bmmubzfoadqm)" height="48" id="C_0000867472442996685316" style="stroke: #A80036; stroke-width: 1.5;" width="89" x="493" y="172"/>
<ellipse cx="508" cy="188" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M510.9688,193.6406 Q510.3906,193.9375 509.75,194.0781 Q509.1094,194.2344 508.4063,194.2344 Q505.9063,194.2344 504.5781,192.5938 Q503.2656,190.9375 503.2656,187.8125 Q503.2656,184.6875 504.5781,183.0313 Q505.9063,181.375 508.4063,181.375 Q509.1094,181.375 509.75,181.5313 Q510.4063,181.6875 510.9688,181.9844 L510.9688,184.7031 Q510.3438,184.125 509.75,183.8594 Q509.1563,183.5781 508.5313,183.5781 Q507.1875,183.5781 506.5,184.6563 Q505.8125,185.7188 505.8125,187.8125 Q505.8125,189.9063 506.5,190.9844 Q507.1875,192.0469 508.5313,192.0469 Q509.1563,192.0469 509.75,191.7813 Q510.3438,191.5 510.9688,190.9219 L510.9688,193.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="46" x="522" y="192.1543">lift_void</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="576" y="169"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="577" y="181.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="494" x2="581" y1="204" y2="204"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="494" x2="581" y1="212" y2="212"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L20" target="_top" title="lift_void" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L20" xlink:show="new" xlink:title="lift_void" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuj92rewlwquc)" height="48" id="C_0000126450862226197239" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="401" y="21"/>
<ellipse cx="416" cy="37" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M418.9688,42.6406 Q418.3906,42.9375 417.75,43.0781 Q417.1094,43.2344 416.4063,43.2344 Q413.9063,43.2344 412.5781,41.5938 Q411.2656,39.9375 411.2656,36.8125 Q411.2656,33.6875 412.5781,32.0313 Q413.9063,30.375 416.4063,30.375 Q417.1094,30.375 417.75,30.5313 Q418.4063,30.6875 418.9688,30.9844 L418.9688,33.7031 Q418.3438,33.125 417.75,32.8594 Q417.1563,32.5781 416.5313,32.5781 Q415.1875,32.5781 414.5,33.6563 Q413.8125,34.7188 413.8125,36.8125 Q413.8125,38.9063 414.5,39.9844 Q415.1875,41.0469 416.5313,41.0469 Q417.1563,41.0469 417.75,40.7813 Q418.3438,40.5 418.9688,39.9219 L418.9688,42.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="46" x="430" y="41.1543">lift_void</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="27" x="484" y="18"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="25" x="485" y="30.1387">void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="402" x2="507" y1="53" y2="53"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="402" x2="507" y1="61" y2="61"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L20" target="_top" title="lift_void" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L20" xlink:show="new" xlink:title="lift_void" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1bmmubzfoadqm)" height="48" id="C_0000126450862226197239" style="stroke: #A80036; stroke-width: 1.5;" width="107" x="484" y="21"/>
<ellipse cx="499" cy="37" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M501.9688,42.6406 Q501.3906,42.9375 500.75,43.0781 Q500.1094,43.2344 499.4063,43.2344 Q496.9063,43.2344 495.5781,41.5938 Q494.2656,39.9375 494.2656,36.8125 Q494.2656,33.6875 495.5781,32.0313 Q496.9063,30.375 499.4063,30.375 Q500.1094,30.375 500.75,30.5313 Q501.4063,30.6875 501.9688,30.9844 L501.9688,33.7031 Q501.3438,33.125 500.75,32.8594 Q500.1563,32.5781 499.5313,32.5781 Q498.1875,32.5781 497.5,33.6563 Q496.8125,34.7188 496.8125,36.8125 Q496.8125,38.9063 497.5,39.9844 Q498.1875,41.0469 499.5313,41.0469 Q500.1563,41.0469 500.75,40.7813 Q501.3438,40.5 501.9688,39.9219 L501.9688,42.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="46" x="513" y="41.1543">lift_void</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="27" x="567" y="18"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="25" x="568" y="30.1387">void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="485" x2="590" y1="53" y2="53"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="485" x2="590" y1="61" y2="61"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L33" target="_top" title="drop_void" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L33" xlink:show="new" xlink:title="drop_void" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuj92rewlwquc)" height="48" id="C_0001578745816100337706" style="stroke: #A80036; stroke-width: 1.5;" width="103" x="553" y="172"/>
<ellipse cx="568" cy="188" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M570.9688,193.6406 Q570.3906,193.9375 569.75,194.0781 Q569.1094,194.2344 568.4063,194.2344 Q565.9063,194.2344 564.5781,192.5938 Q563.2656,190.9375 563.2656,187.8125 Q563.2656,184.6875 564.5781,183.0313 Q565.9063,181.375 568.4063,181.375 Q569.1094,181.375 569.75,181.5313 Q570.4063,181.6875 570.9688,181.9844 L570.9688,184.7031 Q570.3438,184.125 569.75,183.8594 Q569.1563,183.5781 568.5313,183.5781 Q567.1875,183.5781 566.5,184.6563 Q565.8125,185.7188 565.8125,187.8125 Q565.8125,189.9063 566.5,190.9844 Q567.1875,192.0469 568.5313,192.0469 Q569.1563,192.0469 569.75,191.7813 Q570.3438,191.5 570.9688,190.9219 L570.9688,193.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="582" y="192.1543">drop_void</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="650" y="169"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="651" y="181.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="554" x2="655" y1="204" y2="204"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="554" x2="655" y1="212" y2="212"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L33" target="_top" title="drop_void" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L33" xlink:show="new" xlink:title="drop_void" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1bmmubzfoadqm)" height="48" id="C_0001578745816100337706" style="stroke: #A80036; stroke-width: 1.5;" width="103" x="346" y="172"/>
<ellipse cx="361" cy="188" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M363.9688,193.6406 Q363.3906,193.9375 362.75,194.0781 Q362.1094,194.2344 361.4063,194.2344 Q358.9063,194.2344 357.5781,192.5938 Q356.2656,190.9375 356.2656,187.8125 Q356.2656,184.6875 357.5781,183.0313 Q358.9063,181.375 361.4063,181.375 Q362.1094,181.375 362.75,181.5313 Q363.4063,181.6875 363.9688,181.9844 L363.9688,184.7031 Q363.3438,184.125 362.75,183.8594 Q362.1563,183.5781 361.5313,183.5781 Q360.1875,183.5781 359.5,184.6563 Q358.8125,185.7188 358.8125,187.8125 Q358.8125,189.9063 359.5,190.9844 Q360.1875,192.0469 361.5313,192.0469 Q362.1563,192.0469 362.75,191.7813 Q363.3438,191.5 363.9688,190.9219 L363.9688,193.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="375" y="192.1543">drop_void</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="9" x="443" y="169"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="7" x="444" y="181.1387">T</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="347" x2="448" y1="204" y2="204"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="347" x2="448" y1="212" y2="212"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L37" target="_top" title="drop_void" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L37" xlink:show="new" xlink:title="drop_void" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuj92rewlwquc)" height="48" id="C_0001849836134504075115" style="stroke: #A80036; stroke-width: 1.5;" width="123" x="543" y="21"/>
<ellipse cx="558" cy="37" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M560.9688,42.6406 Q560.3906,42.9375 559.75,43.0781 Q559.1094,43.2344 558.4063,43.2344 Q555.9063,43.2344 554.5781,41.5938 Q553.2656,39.9375 553.2656,36.8125 Q553.2656,33.6875 554.5781,32.0313 Q555.9063,30.375 558.4063,30.375 Q559.1094,30.375 559.75,30.5313 Q560.4063,30.6875 560.9688,30.9844 L560.9688,33.7031 Q560.3438,33.125 559.75,32.8594 Q559.1563,32.5781 558.5313,32.5781 Q557.1875,32.5781 556.5,33.6563 Q555.8125,34.7188 555.8125,36.8125 Q555.8125,38.9063 556.5,39.9844 Q557.1875,41.0469 558.5313,41.0469 Q559.1563,41.0469 559.75,40.7813 Q560.3438,40.5 560.9688,39.9219 L560.9688,42.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="572" y="41.1543">drop_void</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="29" x="640" y="18"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="27" x="641" y="30.1387">Void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="544" x2="665" y1="53" y2="53"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="544" x2="665" y1="61" y2="61"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L37" target="_top" title="drop_void" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L37" xlink:show="new" xlink:title="drop_void" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1bmmubzfoadqm)" height="48" id="C_0001849836134504075115" style="stroke: #A80036; stroke-width: 1.5;" width="123" x="212" y="21"/>
<ellipse cx="227" cy="37" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M229.9688,42.6406 Q229.3906,42.9375 228.75,43.0781 Q228.1094,43.2344 227.4063,43.2344 Q224.9063,43.2344 223.5781,41.5938 Q222.2656,39.9375 222.2656,36.8125 Q222.2656,33.6875 223.5781,32.0313 Q224.9063,30.375 227.4063,30.375 Q228.1094,30.375 228.75,30.5313 Q229.4063,30.6875 229.9688,30.9844 L229.9688,33.7031 Q229.3438,33.125 228.75,32.8594 Q228.1563,32.5781 227.5313,32.5781 Q226.1875,32.5781 225.5,33.6563 Q224.8125,34.7188 224.8125,36.8125 Q224.8125,38.9063 225.5,39.9844 Q226.1875,41.0469 227.5313,41.0469 Q228.1563,41.0469 228.75,40.7813 Q229.3438,40.5 229.9688,39.9219 L229.9688,42.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="241" y="41.1543">drop_void</text>
<rect fill="#FFFFFF" height="15.9688" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="29" x="309" y="18"/>
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="27" x="310" y="30.1387">Void</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="213" x2="334" y1="53" y2="53"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="213" x2="334" y1="61" y2="61"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L43" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L43" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuj92rewlwquc)" height="48" id="C_0001383912907884688827" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="334.5" y="172"/>
<ellipse cx="349.5" cy="188" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M352.4688,193.6406 Q351.8906,193.9375 351.25,194.0781 Q350.6094,194.2344 349.9063,194.2344 Q347.4063,194.2344 346.0781,192.5938 Q344.7656,190.9375 344.7656,187.8125 Q344.7656,184.6875 346.0781,183.0313 Q347.4063,181.375 349.9063,181.375 Q350.6094,181.375 351.25,181.5313 Q351.9063,181.6875 352.4688,181.9844 L352.4688,184.7031 Q351.8438,184.125 351.25,183.8594 Q350.6563,183.5781 350.0313,183.5781 Q348.6875,183.5781 348,184.6563 Q347.3125,185.7188 347.3125,187.8125 Q347.3125,189.9063 348,190.9844 Q348.6875,192.0469 350.0313,192.0469 Q350.6563,192.0469 351.25,191.7813 Q351.8438,191.5 352.4688,190.9219 L352.4688,193.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="363.5" y="192.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="335.5" x2="373.5" y1="204" y2="204"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="335.5" x2="373.5" y1="212" y2="212"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L43" target="_top" title="A" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L43" xlink:show="new" xlink:title="A" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1bmmubzfoadqm)" height="48" id="C_0001383912907884688827" style="stroke: #A80036; stroke-width: 1.5;" width="40" x="681.5" y="172"/>
<ellipse cx="696.5" cy="188" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M699.4688,193.6406 Q698.8906,193.9375 698.25,194.0781 Q697.6094,194.2344 696.9063,194.2344 Q694.4063,194.2344 693.0781,192.5938 Q691.7656,190.9375 691.7656,187.8125 Q691.7656,184.6875 693.0781,183.0313 Q694.4063,181.375 696.9063,181.375 Q697.6094,181.375 698.25,181.5313 Q698.9063,181.6875 699.4688,181.9844 L699.4688,184.7031 Q698.8438,184.125 698.25,183.8594 Q697.6563,183.5781 697.0313,183.5781 Q695.6875,183.5781 695,184.6563 Q694.3125,185.7188 694.3125,187.8125 Q694.3125,189.9063 695,190.9844 Q695.6875,192.0469 697.0313,192.0469 Q697.6563,192.0469 698.25,191.7813 Q698.8438,191.5 699.4688,190.9219 L699.4688,193.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="710.5" y="192.1543">A</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="682.5" x2="720.5" y1="204" y2="204"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="682.5" x2="720.5" y1="212" y2="212"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L46" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L46" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuj92rewlwquc)" height="73.6094" id="C_0001713991735741265309" style="stroke: #A80036; stroke-width: 1.5;" width="151" x="214" y="8"/>
<ellipse cx="281.25" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M284.2188,29.6406 Q283.6406,29.9375 283,30.0781 Q282.3594,30.2344 281.6563,30.2344 Q279.1563,30.2344 277.8281,28.5938 Q276.5156,26.9375 276.5156,23.8125 Q276.5156,20.6875 277.8281,19.0313 Q279.1563,17.375 281.6563,17.375 Q282.3594,17.375 283,17.5313 Q283.6563,17.6875 284.2188,17.9844 L284.2188,20.7031 Q283.5938,20.125 283,19.8594 Q282.4063,19.5781 281.7813,19.5781 Q280.4375,19.5781 279.75,20.6563 Q279.0625,21.7188 279.0625,23.8125 Q279.0625,25.9063 279.75,26.9844 Q280.4375,28.0469 281.7813,28.0469 Q282.4063,28.0469 283,27.7813 Q283.5938,27.5 284.2188,26.9219 L284.2188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="301.75" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="215" x2="364" y1="40" y2="40"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L45" target="_top" title="R" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L45" xlink:show="new" xlink:title="R" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1bmmubzfoadqm)" height="73.6094" id="C_0001713991735741265309" style="stroke: #A80036; stroke-width: 1.5;" width="151" x="626" y="8"/>
<ellipse cx="693.25" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M696.2188,29.6406 Q695.6406,29.9375 695,30.0781 Q694.3594,30.2344 693.6563,30.2344 Q691.1563,30.2344 689.8281,28.5938 Q688.5156,26.9375 688.5156,23.8125 Q688.5156,20.6875 689.8281,19.0313 Q691.1563,17.375 693.6563,17.375 Q694.3594,17.375 695,17.5313 Q695.6563,17.6875 696.2188,17.9844 L696.2188,20.7031 Q695.5938,20.125 695,19.8594 Q694.4063,19.5781 693.7813,19.5781 Q692.4375,19.5781 691.75,20.6563 Q691.0625,21.7188 691.0625,23.8125 Q691.0625,25.9063 691.75,26.9844 Q692.4375,28.0469 693.7813,28.0469 Q694.4063,28.0469 695,27.7813 Q695.5938,27.5 696.2188,26.9219 L696.2188,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="8" x="713.75" y="28.1543">R</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="627" x2="776" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="627" x2="776" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L47" target="_top" title="la" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L47" xlink:show="new" xlink:title="la" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="220" y="46"/>
<ellipse cx="225" cy="51" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L46" target="_top" title="la" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L46" xlink:show="new" xlink:title="la" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="632" y="54"/>
<ellipse cx="637" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L47" target="_top" title="la" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L47" xlink:show="new" xlink:title="la" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="110" x="234" y="54.2104">la : lift_void_t&lt;A&gt; *</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L46" target="_top" title="la" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L46" xlink:show="new" xlink:title="la" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="110" x="646" y="62.2104">la : lift_void_t&lt;A&gt; *</text>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L48" target="_top" title="lv" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L48" xlink:show="new" xlink:title="lv" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="220" y="58.8047"/>
<ellipse cx="225" 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/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L47" target="_top" title="lv" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L47" xlink:show="new" xlink:title="lv" xlink:type="simple">
<rect fill="#FEFECE" height="10" style="stroke: none; stroke-width: 1.0;" width="20" x="632" y="66.8047"/>
<ellipse cx="637" 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/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L48" target="_top" title="lv" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00034/t00034.cc#L48" xlink:show="new" xlink:title="lv" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="125" x="234" y="67.0151">lv : lift_void_t&lt;void&gt; *</text>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L47" target="_top" title="lv" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00034/t00034.cc#L47" xlink:show="new" xlink:title="lv" xlink:type="simple">
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="125" x="646" y="75.0151">lv : lift_void_t&lt;void&gt; *</text>
</a>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="215" x2="364" y1="73.6094" y2="73.6094"/>
<path d="M454.5,69.28 C454.5,91.26 454.5,124.76 454.5,151.66 " fill="none" id="C_0000126450862226197239-&gt;C_0000867472442996685316" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="461.5,151.88,454.5,171.88,447.5,151.88,461.5,151.88" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M604.5,69.28 C604.5,91.26 604.5,124.76 604.5,151.66 " fill="none" id="C_0001849836134504075115-&gt;C_0001578745816100337706" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="611.5,151.88,604.5,171.88,597.5,151.88,611.5,151.88" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M281.61,82.35 C280.01,97.33 280.38,114.52 286.5,129 C287.11,130.45 311.22,153.68 330.56,172.18 " fill="none" id="C_0001713991735741265309-&gt;C_0001383912907884688827" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="334.36,175.81,330.6211,166.6984,330.7468,172.3539,325.0913,172.4796,334.36,175.81" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="292.5" cy="121.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="11" x="299.5" y="125.0669">la</text>
<path d="M305.23,82.07 C316.65,108.23 331.86,143.1 342.34,167.13 " fill="none" id="C_0001713991735741265309-&gt;C_0001383912907884688827-1" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="344.37,171.79,344.4385,161.9414,342.3712,167.2069,337.1056,165.1395,344.37,171.79" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="330.5" cy="121.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="11" x="337.5" y="125.0669">la</text>
<path d="M256.34,82.07 C236.12,104.05 210.26,132.18 189.4,154.87 " fill="none" id="C_0001713991735741265309-&gt;C_0001704456490210873213" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="185.83,158.75,194.8643,154.828,189.2125,155.0678,188.9727,149.416,185.83,158.75" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="231.5" cy="121.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="10" x="238.5" y="125.0669">lv</text>
<path d="M537.5,69.28 C537.5,91.26 537.5,124.76 537.5,151.66 " fill="none" id="C_0000126450862226197239-&gt;C_0000867472442996685316" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="544.5,151.88,537.5,171.88,530.5,151.88,544.5,151.88" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M255.53,69.28 C237.89,92.14 210.63,127.46 189.48,154.85 " fill="none" id="C_0001849836134504075115-&gt;C_0001704456490210873213" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="#A80036" points="186.41,158.84,195.0777,154.1633,189.4668,154.8833,188.7469,149.2724,186.41,158.84" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M292.88,69.28 C312.26,92.57 342.41,128.81 365.38,156.4 " fill="none" id="C_0001849836134504075115-&gt;C_0001578745816100337706" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/>
<polygon fill="none" points="370.85,152.03,378.26,171.88,360.09,160.99,370.85,152.03" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M677.51,82.35 C672.56,91.64 668.08,101.88 665.5,112 C660.6,131.2 669.27,151.63 679.33,167.42 " fill="none" id="C_0001713991735741265309-&gt;C_0001383912907884688827" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="682.19,171.74,680.5644,162.0262,679.433,167.5688,673.8904,166.4374,682.19,171.74" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="671.5" cy="121.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="11" x="678.5" y="125.0669">la</text>
<path d="M701.5,82.07 C701.5,108.01 701.5,142.52 701.5,166.53 " fill="none" id="C_0001713991735741265309-&gt;C_0001383912907884688827-1" style="stroke: #A80036; stroke-width: 1.0;"/>
<polygon fill="#A80036" points="701.5,171.79,705.5,162.79,701.5,166.79,697.5,162.79,701.5,171.79" style="stroke: #A80036; stroke-width: 1.0;"/>
<ellipse cx="707.5" cy="121.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="11" x="714.5" y="125.0669">la</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -27,20 +27,15 @@ File t00035.cc
namespace clanguml {
namespace t00035 {
struct Top {
};
struct Top { };
struct Left {
};
struct Left { };
struct Center {
};
struct Center { };
struct Bottom {
};
struct Bottom { };
struct Right {
};
struct Right { };
} // namespace t00035
} // namespace clanguml
@@ -48,3 +43,119 @@ struct Right {
```
## Generated UML diagrams
![t00035_class](./t00035_class.svg "PlantUML class diagram layout hints test case")
## Generated JSON models
```json
{
"diagram_type": "class",
"elements": [
{
"bases": [],
"display_name": "clanguml::t00035::Top",
"id": "2241062883697294772",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "Top",
"namespace": "clanguml::t00035",
"source_location": {
"file": "../../tests/t00035/t00035.cc",
"line": 4
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00035::Left",
"id": "242562856080127946",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "Left",
"namespace": "clanguml::t00035",
"source_location": {
"file": "../../tests/t00035/t00035.cc",
"line": 6
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00035::Center",
"id": "1933304541849408421",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "Center",
"namespace": "clanguml::t00035",
"source_location": {
"file": "../../tests/t00035/t00035.cc",
"line": 8
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00035::Bottom",
"id": "1646691079607377420",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "Bottom",
"namespace": "clanguml::t00035",
"source_location": {
"file": "../../tests/t00035/t00035.cc",
"line": 10
},
"template_parameters": [],
"type": "class"
},
{
"bases": [],
"display_name": "clanguml::t00035::Right",
"id": "200121820090372322",
"is_abstract": false,
"is_nested": false,
"is_struct": true,
"is_template": false,
"is_union": false,
"members": [],
"methods": [],
"name": "Right",
"namespace": "clanguml::t00035",
"source_location": {
"file": "../../tests/t00035/t00035.cc",
"line": 12
},
"template_parameters": [],
"type": "class"
}
],
"metadata": {
"clang_uml_version": "0.3.6-31-g01ef3dc",
"llvm_version": "Ubuntu clang version 15.0.6",
"schema_version": 1
},
"name": "t00035_class",
"relationships": [],
"using_namespace": "clanguml::t00035"
}
```

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:280px;height:283px;" version="1.1" viewBox="0 0 280 283" width="280px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="fuhbdwknfth5" width="300%" x="-1" y="-1">
<filter height="300%" id="f1jcrdbaa4ro42" 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,40 +9,40 @@
<style type="text/css">a:hover { text-decoration: underline; }</style>
</defs>
<g>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00035/t00035.cc#L4" target="_top" title="Top" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00035/t00035.cc#L4" xlink:show="new" xlink:title="Top" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuhbdwknfth5)" height="48" id="C_0002241062883697294772" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="106" y="8"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00035/t00035.cc#L4" target="_top" title="Top" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00035/t00035.cc#L4" xlink:show="new" xlink:title="Top" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jcrdbaa4ro42)" height="48" id="C_0002241062883697294772" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="106" y="8"/>
<ellipse cx="121" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M123.9688,29.6406 Q123.3906,29.9375 122.75,30.0781 Q122.1094,30.2344 121.4063,30.2344 Q118.9063,30.2344 117.5781,28.5938 Q116.2656,26.9375 116.2656,23.8125 Q116.2656,20.6875 117.5781,19.0313 Q118.9063,17.375 121.4063,17.375 Q122.1094,17.375 122.75,17.5313 Q123.4063,17.6875 123.9688,17.9844 L123.9688,20.7031 Q123.3438,20.125 122.75,19.8594 Q122.1563,19.5781 121.5313,19.5781 Q120.1875,19.5781 119.5,20.6563 Q118.8125,21.7188 118.8125,23.8125 Q118.8125,25.9063 119.5,26.9844 Q120.1875,28.0469 121.5313,28.0469 Q122.1563,28.0469 122.75,27.7813 Q123.3438,27.5 123.9688,26.9219 L123.9688,29.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="23" x="135" y="28.1543">Top</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="107" x2="160" y1="40" y2="40"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="107" x2="160" y1="48" y2="48"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00035/t00035.cc#L7" target="_top" title="Left" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00035/t00035.cc#L7" xlink:show="new" xlink:title="Left" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuhbdwknfth5)" height="48" id="C_0000242562856080127946" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="6" y="116"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00035/t00035.cc#L6" target="_top" title="Left" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00035/t00035.cc#L6" xlink:show="new" xlink:title="Left" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jcrdbaa4ro42)" height="48" id="C_0000242562856080127946" style="stroke: #A80036; stroke-width: 1.5;" width="55" 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="23" x="35" y="136.1543">Left</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="60" y1="148" y2="148"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="60" y1="156" y2="156"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00035/t00035.cc#L10" target="_top" title="Center" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00035/t00035.cc#L10" xlink:show="new" xlink:title="Center" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuhbdwknfth5)" height="48" id="C_0001933304541849408421" style="stroke: #A80036; stroke-width: 1.5;" width="74" x="96.5" y="116"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00035/t00035.cc#L8" target="_top" title="Center" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00035/t00035.cc#L8" xlink:show="new" xlink:title="Center" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jcrdbaa4ro42)" height="48" id="C_0001933304541849408421" style="stroke: #A80036; stroke-width: 1.5;" width="74" x="96.5" y="116"/>
<ellipse cx="111.5" cy="132" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M114.4688,137.6406 Q113.8906,137.9375 113.25,138.0781 Q112.6094,138.2344 111.9063,138.2344 Q109.4063,138.2344 108.0781,136.5938 Q106.7656,134.9375 106.7656,131.8125 Q106.7656,128.6875 108.0781,127.0313 Q109.4063,125.375 111.9063,125.375 Q112.6094,125.375 113.25,125.5313 Q113.9063,125.6875 114.4688,125.9844 L114.4688,128.7031 Q113.8438,128.125 113.25,127.8594 Q112.6563,127.5781 112.0313,127.5781 Q110.6875,127.5781 110,128.6563 Q109.3125,129.7188 109.3125,131.8125 Q109.3125,133.9063 110,134.9844 Q110.6875,136.0469 112.0313,136.0469 Q112.6563,136.0469 113.25,135.7813 Q113.8438,135.5 114.4688,134.9219 L114.4688,137.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="42" x="125.5" y="136.1543">Center</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="97.5" x2="169.5" y1="148" y2="148"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="97.5" x2="169.5" y1="156" y2="156"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00035/t00035.cc#L13" target="_top" title="Bottom" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00035/t00035.cc#L13" xlink:show="new" xlink:title="Bottom" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuhbdwknfth5)" height="48" id="C_0001646691079607377420" style="stroke: #A80036; stroke-width: 1.5;" width="77" x="95" y="224"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00035/t00035.cc#L10" target="_top" title="Bottom" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00035/t00035.cc#L10" xlink:show="new" xlink:title="Bottom" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jcrdbaa4ro42)" height="48" id="C_0001646691079607377420" style="stroke: #A80036; stroke-width: 1.5;" width="77" x="95" y="224"/>
<ellipse cx="110" cy="240" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M112.9688,245.6406 Q112.3906,245.9375 111.75,246.0781 Q111.1094,246.2344 110.4063,246.2344 Q107.9063,246.2344 106.5781,244.5938 Q105.2656,242.9375 105.2656,239.8125 Q105.2656,236.6875 106.5781,235.0313 Q107.9063,233.375 110.4063,233.375 Q111.1094,233.375 111.75,233.5313 Q112.4063,233.6875 112.9688,233.9844 L112.9688,236.7031 Q112.3438,236.125 111.75,235.8594 Q111.1563,235.5781 110.5313,235.5781 Q109.1875,235.5781 108.5,236.6563 Q107.8125,237.7188 107.8125,239.8125 Q107.8125,241.9063 108.5,242.9844 Q109.1875,244.0469 110.5313,244.0469 Q111.1563,244.0469 111.75,243.7813 Q112.3438,243.5 112.9688,242.9219 L112.9688,245.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="124" y="244.1543">Bottom</text>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="96" x2="171" y1="256" y2="256"/>
<line style="stroke: #A80036; stroke-width: 1.5;" x1="96" x2="171" y1="264" y2="264"/>
</a>
<a href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00035/t00035.cc#L16" target="_top" title="Right" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/993726299647bf4dab2ef054bb756539c4f18ffe/tests/t00035/t00035.cc#L16" xlink:show="new" xlink:title="Right" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#fuhbdwknfth5)" height="48" id="C_0000200121820090372322" style="stroke: #A80036; stroke-width: 1.5;" width="64" x="205.5" y="116"/>
<a href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00035/t00035.cc#L12" target="_top" title="Right" xlink:actuate="onRequest" xlink:href="https://github.com/bkryza/clang-uml/blob/01ef3dcbcc62dfdf04b1a2c76468b8c4c4488248/tests/t00035/t00035.cc#L12" xlink:show="new" xlink:title="Right" xlink:type="simple">
<rect fill="#FEFECE" filter="url(#f1jcrdbaa4ro42)" height="48" id="C_0000200121820090372322" style="stroke: #A80036; stroke-width: 1.5;" width="64" x="205.5" y="116"/>
<ellipse cx="220.5" cy="132" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
<path d="M223.4688,137.6406 Q222.8906,137.9375 222.25,138.0781 Q221.6094,138.2344 220.9063,138.2344 Q218.4063,138.2344 217.0781,136.5938 Q215.7656,134.9375 215.7656,131.8125 Q215.7656,128.6875 217.0781,127.0313 Q218.4063,125.375 220.9063,125.375 Q221.6094,125.375 222.25,125.5313 Q222.9063,125.6875 223.4688,125.9844 L223.4688,128.7031 Q222.8438,128.125 222.25,127.8594 Q221.6563,127.5781 221.0313,127.5781 Q219.6875,127.5781 219,128.6563 Q218.3125,129.7188 218.3125,131.8125 Q218.3125,133.9063 219,134.9844 Q219.6875,136.0469 221.0313,136.0469 Q221.6563,136.0469 222.25,135.7813 Q222.8438,135.5 223.4688,134.9219 L223.4688,137.6406 Z "/>
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="32" x="234.5" y="136.1543">Right</text>

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

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