diff --git a/docs/test_cases.md b/docs/test_cases.md
index 79077068..a28e7d89 100644
--- a/docs/test_cases.md
+++ b/docs/test_cases.md
@@ -43,6 +43,7 @@
* [t00042](./test_cases/t00042.md) - Specialization class template diagram filter test
* [t00043](./test_cases/t00043.md) - Dependants and dependencies class diagram filter test
* [t00044](./test_cases/t00044.md) - Test case for inner type aliases with parent class template args
+ * [t00045](./test_cases/t00045.md) - Test case for root namespace handling
## Sequence diagrams
* [t20001](./test_cases/t20001.md) - Basic sequence diagram test case
* [t20002](./test_cases/t20002.md) - Free function sequence diagram test case
diff --git a/docs/test_cases/t00002_class.svg b/docs/test_cases/t00002_class.svg
index c54ad046..0dc8893e 100644
--- a/docs/test_cases/t00002_class.svg
+++ b/docs/test_cases/t00002_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,123 +9,123 @@
-
-
+
+
A
-
+
-
+
foo_a() = 0 : void
-
+
-
+
foo_c() = 0 : void
-
-
+
+
B
-
+
-
+
foo_a() : void
-
-
+
+
C
-
+
-
+
foo_c() : void
-
-
+
+
D
-
+
-
+
as : std::vector<A*>
-
+
-
+
foo_a() : void
-
+
-
+
foo_c() : void
-
-
+
+
E
-
+
-
+
as : std::vector<A*>
-
+
-
+
foo_a() : void
-
+
-
+
foo_c() : void
-
+
This is class A
-
+
This is class B
-
+
This is class D
which is a little like B
@@ -142,13 +142,13 @@
-
+
as
-
+
-
+
diff --git a/docs/test_cases/t00003_class.svg b/docs/test_cases/t00003_class.svg
index 38952b2f..3d6f1a8f 100644
--- a/docs/test_cases/t00003_class.svg
+++ b/docs/test_cases/t00003_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,194 +9,194 @@
-
-
+
+
A
-
+
-
+
public_member : int
-
+
-
+
static_int : int
-
+
-
+
static_const_int : int const
-
+
-
+
auto_member : unsigned long const
-
+
-
+
protected_member : int
-
+
-
+
private_member : int
-
+
-
+
a : int
-
+
-
+
b : int
-
+
-
+
c : int
-
+
-
+
A() : void
-
+
-
+
A(int i) : void
-
+
-
+
A(A&& ) : void
-
+
-
+
A(A const& ) : void
-
+
-
+
~A() : void
-
+
-
+
basic_method() : void
-
+
-
+
static_method() : int
-
+
-
+
const_method() const : void
-
+
-
+
auto_method() : int
-
+
-
+
double_int(int const i) : int
-
+
-
+
sum(double const a, double const b) : double
-
+
-
+
default_int(int i = 12) : int
-
+
-
+
default_string(int i, std::string s = "abc") : std::string
-
+
-
+
create_from_int(int i) : A
-
+
-
+
protected_method() : void
-
+
-
+
private_method() : void
-
+
-
+
compare : std::function<bool(int const)>
diff --git a/docs/test_cases/t00004_class.svg b/docs/test_cases/t00004_class.svg
index 58f80627..d843df8a 100644
--- a/docs/test_cases/t00004_class.svg
+++ b/docs/test_cases/t00004_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,38 +9,38 @@
-
-
+
+
A
-
+
-
+
foo() const : void
-
+
-
+
foo2() const : void
-
-
+
+
AA
-
-
+
+
Lights
@@ -50,23 +50,23 @@
Red
-
-
+
+
AAA
-
+
-
+
-
+
diff --git a/docs/test_cases/t00005_class.svg b/docs/test_cases/t00005_class.svg
index 05bb9403..7e18e27a 100644
--- a/docs/test_cases/t00005_class.svg
+++ b/docs/test_cases/t00005_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,238 +9,238 @@
-
-
+
+
A
-
-
+
+
B
-
-
+
+
C
-
-
+
+
D
-
-
+
+
E
-
-
+
+
F
-
-
+
+
G
-
-
+
+
H
-
-
+
+
I
-
-
+
+
J
-
-
+
+
K
-
-
+
+
R
-
+
-
+
some_int : int
-
+
-
+
some_int_pointer : int*
-
+
-
+
some_int_pointer_pointer : int**
-
+
-
+
some_int_reference : int&
-
+
-
+
a : A
-
+
-
+
b : B*
-
+
-
+
c : C&
-
+
-
+
d : D const*
-
+
-
+
e : E const&
-
+
-
+
f : F&&
-
+
-
+
g : G**
-
+
-
+
h : H***
-
+
-
+
i : I*&
-
+
-
+
j : J volatile*
-
+
-
+
k : K*
-
+
+a
-
+
+b
-
+
+c
-
+
+d
-
+
+e
-
+
+f
-
+
+g
-
+
+h
-
+
+i
-
+
+j
-
+
+k
diff --git a/docs/test_cases/t00006_class.svg b/docs/test_cases/t00006_class.svg
index 8ec8e160..a92b2f34 100644
--- a/docs/test_cases/t00006_class.svg
+++ b/docs/test_cases/t00006_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,136 +9,136 @@
-
-
+
+
A
-
-
+
+
B
-
-
+
+
C
-
-
+
+
D
-
-
+
+
E
-
-
+
+
F
-
-
+
+
G
-
-
+
+
H
-
-
+
+
I
-
-
+
+
J
-
-
+
+
K
-
-
+
+
L
-
-
+
+
M
-
-
+
+
N
-
-
+
+
NN
-
-
+
+
NNN
-
-
+
+
custom_container
@@ -146,15 +146,15 @@
T
-
+
-
+
data : std::vector<T>
-
+
custom_container
@@ -162,159 +162,159 @@
E
-
-
+
+
R
-
+
-
+
a : std::vector<A>
-
+
-
+
b : std::vector<B*>
-
+
-
+
c : std::map<int,C>
-
+
-
+
d : std::map<int,D*>
-
+
-
+
e : custom_container<E>
-
+
-
+
f : std::vector<std::vector<F>>
-
+
-
+
g : std::map<int,std::vector<G*>>
-
+
-
+
h : std::array<H,10>
-
+
-
+
i : std::array<I*,5>
-
+
-
+
j : J[10]
-
+
-
+
k : K*[20]
-
+
-
+
lm : std::vector<std::pair<L,M>>
-
+
-
+
ns : std::tuple<N,NN,NNN>
-
+
-
+
-
+
+a
-
+
+b
-
+
+c
-
+
+d
-
+
+e
-
+
+f
-
+
+g
-
+
+h
-
+
+i
-
+
+j
-
+
+k
-
+
lm
-
+
lm
-
+
ns
-
+
ns
-
+
ns
diff --git a/docs/test_cases/t00007_class.svg b/docs/test_cases/t00007_class.svg
index 69079756..46d12204 100644
--- a/docs/test_cases/t00007_class.svg
+++ b/docs/test_cases/t00007_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,66 +9,66 @@
-
-
+
+
A
-
-
+
+
B
-
-
+
+
C
-
-
+
+
R
-
+
-
+
a : std::unique_ptr<A>
-
+
-
+
b : std::shared_ptr<B>
-
+
-
+
c : std::weak_ptr<C>
-
+
+a
-
+
+b
-
+
+c
diff --git a/docs/test_cases/t00008_class.svg b/docs/test_cases/t00008_class.svg
index 51a12e2b..dc6af6e7 100644
--- a/docs/test_cases/t00008_class.svg
+++ b/docs/test_cases/t00008_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,8 +9,8 @@
-
-
+
+
A
@@ -18,51 +18,51 @@
T,P,CMP,int N
-
+
-
+
value : T
-
+
-
+
pointer : T*
-
+
-
+
reference : T&
-
+
-
+
values : std::vector<P>
-
+
-
+
ints : std::array<int,N>
-
+
-
+
comparator : CMP
-
-
+
+
Vector
@@ -70,16 +70,16 @@
T
-
+
-
+
values : std::vector<T>
-
-
+
+
B
@@ -87,15 +87,15 @@
T,C<>
-
+
-
+
template_template : C<T>
-
+
B
@@ -103,38 +103,38 @@
int,Vector
-
-
+
+
D
-
+
-
+
ints : B<int,Vector>
-
+
-
+
D(std::tuple<Items...>* ) : void
-
+
-
+
add(int i) : void
-
+
-
+
ints
diff --git a/docs/test_cases/t00009_class.svg b/docs/test_cases/t00009_class.svg
index 9f878af6..533159c1 100644
--- a/docs/test_cases/t00009_class.svg
+++ b/docs/test_cases/t00009_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,8 +9,8 @@
-
-
+
+
A
@@ -18,15 +18,15 @@
T
-
+
-
+
value : T
-
+
A
@@ -34,7 +34,7 @@
int
-
+
A
@@ -42,7 +42,7 @@
std::string
-
+
A
@@ -50,50 +50,50 @@
std::vector<std::string>
-
-
+
+
B
-
+
-
+
aint : A<int>
-
+
-
+
astring : A<std::string>*
-
+
-
+
avector : A<std::vector<std::string>>&
-
+
-
+
-
+
-
+
aint
-
+
astring
-
+
avector
diff --git a/docs/test_cases/t00010_class.svg b/docs/test_cases/t00010_class.svg
index 2592595e..f4b09d62 100644
--- a/docs/test_cases/t00010_class.svg
+++ b/docs/test_cases/t00010_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,8 +9,8 @@
-
-
+
+
A
@@ -18,22 +18,22 @@
T,P
-
+
-
+
first : T
-
+
-
+
second : P
-
+
A
@@ -41,8 +41,8 @@
T,std::string
-
-
+
+
B
@@ -50,15 +50,15 @@
T
-
+
-
+
astring : A<T,std::string>
-
+
B
@@ -66,30 +66,30 @@
int
-
-
+
+
C
-
+
-
+
aintstring : B<int>
-
+
-
+
astring
-
+
-
+
aintstring
diff --git a/docs/test_cases/t00011_class.svg b/docs/test_cases/t00011_class.svg
index 992a49f0..9b71bd6d 100644
--- a/docs/test_cases/t00011_class.svg
+++ b/docs/test_cases/t00011_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,8 +9,8 @@
-
-
+
+
D
@@ -18,56 +18,56 @@
T
-
+
-
+
value : T
-
-
+
+
A
-
+
-
+
foo() : void
-
-
+
+
B
-
+
-
+
m_a : A*
-
+
-
+
foo() : void
-
+
«friend»
-
+
m_a
diff --git a/docs/test_cases/t00012.md b/docs/test_cases/t00012.md
index 7bd60b59..cada73f8 100644
--- a/docs/test_cases/t00012.md
+++ b/docs/test_cases/t00012.md
@@ -22,8 +22,8 @@ diagrams:
File t00012.cc
```cpp
#include
+#include
#include
-#include
#include
#include
#include
diff --git a/docs/test_cases/t00012_class.svg b/docs/test_cases/t00012_class.svg
index 44d06d16..8c142246 100644
--- a/docs/test_cases/t00012_class.svg
+++ b/docs/test_cases/t00012_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,32 +9,32 @@
-
-
-
-
- A
-
- T,Ts...
-
+
+
+
+
+ A
+
+ T,Ts...
+
-
-
-
+
+
+
-
- value : T
+
+ value : T
-
-
-
+
+
+
-
- values : int
+
+ values : std::variant<Ts...>
-
-
-
+
+
+
B
@@ -43,15 +43,15 @@
-
+
-
+
ints : std::array<int,sizeof...(Is)>
-
-
+
+
C
@@ -60,14 +60,14 @@
-
+
-
+
ints : std::array<T,sizeof...(Is)>
-
+
A
@@ -75,7 +75,7 @@
int,std::string,float
-
+
A
@@ -83,7 +83,7 @@
int,std::string,bool
-
+
B
@@ -91,7 +91,7 @@
3,2,1
-
+
B
@@ -99,7 +99,7 @@
1,1,1,1
-
+
C
@@ -107,79 +107,79 @@
std::map<int,std::vector<std::vector<std::vector<std::string>>>>,3,3,3
-
-
+
+
R
-
+
-
+
a1 : A<int,std::string,float>
-
+
-
+
a2 : A<int,std::string,bool>
-
+
-
+
b1 : B<3,2,1>
-
+
-
+
b2 : B<1,1,1,1>
-
+
-
+
c1 : C<std::map<int,std::vector<std::vector<std::vector<std::string>>>>,3,3,3>
-
+
Long template annotation
-
+
-
+
-
+
-
+
-
+
-
+
a1
-
+
a2
-
+
b1
-
+
b2
-
+
c1
diff --git a/docs/test_cases/t00013_class.svg b/docs/test_cases/t00013_class.svg
index c43142f8..8b18ec2d 100644
--- a/docs/test_cases/t00013_class.svg
+++ b/docs/test_cases/t00013_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,8 +9,8 @@
-
-
+
+
ABCD::F
@@ -18,83 +18,83 @@
T
-
+
-
+
f : T
-
-
+
+
A
-
+
-
+
a : int
-
-
+
+
B
-
+
-
+
b : int
-
-
+
+
C
-
+
-
+
c : int
-
-
+
+
D
-
+
-
+
d : int
-
+
-
+
print(R* r) : void
-
-
+
+
E
@@ -102,16 +102,16 @@
T
-
+
-
+
e : T
-
-
+
+
G
@@ -119,22 +119,22 @@
T,Args...
-
+
-
+
g : T
-
+
-
+
args : std::tuple<Args...>
-
+
E
@@ -142,7 +142,7 @@
int
-
+
F
@@ -150,7 +150,7 @@
int
-
+
G
@@ -158,7 +158,7 @@
int,float,std::string
-
+
E
@@ -166,136 +166,136 @@
std::string
-
-
+
+
R
-
+
-
+
gintstring : G<int,float,std::string>
-
+
-
+
estring : E<std::string>
-
+
-
+
get_a(A* a) : int
-
+
-
+
get_b(B& b) : int
-
+
-
+
get_const_b(B const& b) : int
-
+
-
+
get_c(C c) : int
-
+
-
+
get_d(D&& d) : int
-
+
-
+
get_d2(D&& d) : int
-
+
-
+
get_e(E<T> e) : T
-
+
-
+
get_int_e(E<int> const& e) : int
-
+
-
+
get_int_e2(E<int>& e) : int
-
+
-
+
get_f(F<T> const& f) : T
-
+
-
+
get_int_f(F<int> const& f) : int
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
gintstring
-
+
estring
diff --git a/docs/test_cases/t00014_class.svg b/docs/test_cases/t00014_class.svg
index 01a1455b..7f19cd46 100644
--- a/docs/test_cases/t00014_class.svg
+++ b/docs/test_cases/t00014_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,8 +9,8 @@
-
-
+
+
A
@@ -18,37 +18,37 @@
T,P
-
+
-
+
t : T
-
+
-
+
p : P
-
-
+
+
B
-
+
-
+
value : std::string
-
+
A
@@ -56,7 +56,7 @@
T,std::string
-
+
A
@@ -64,7 +64,7 @@
T,std::unique_ptr<std::string>
-
+
A
@@ -72,7 +72,7 @@
long,T
-
+
A
@@ -80,7 +80,7 @@
double,T
-
+
A
@@ -88,7 +88,7 @@
long,bool
-
+
A
@@ -96,7 +96,7 @@
double,bool
-
+
A
@@ -104,7 +104,7 @@
long,float
-
+
A
@@ -112,7 +112,7 @@
double,float
-
+
A
@@ -120,7 +120,7 @@
bool,std::string
-
+
A
@@ -128,7 +128,7 @@
float,std::unique_ptr<std::string>
-
+
A
@@ -136,7 +136,7 @@
int,std::string
-
+
A
@@ -144,7 +144,7 @@
std::string,std::string
-
+
A
@@ -152,7 +152,7 @@
char,std::string
-
+
A
@@ -160,214 +160,214 @@
wchar_t,std::string
-
-
+
+
R
-
+
-
+
bapair : PairPairBA<bool>
-
+
-
+
abool : APtr<bool>
-
+
-
+
aboolfloat : AAPtr<bool,float>
-
+
-
+
afloat : ASharedPtr<float>
-
+
-
+
boolstring : A<bool,std::string>
-
+
-
+
floatstring : AStringPtr<float>
-
+
-
+
intstring : AIntString
-
+
-
+
stringstring : AStringString
-
+
-
+
bstringstring : BStringString
-
+
-
+
bs : BVector
-
+
-
+
bs2 : BVector2
-
+
-
+
cb : SimpleCallback<ACharString>
-
+
-
+
gcb : GenericCallback<R::AWCharString>
-
+
-
+
vcb : VoidCallback
-
+
-
+
vps : VectorPtr<B>
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
bapair
-
+
bapair
-
+
bs
-
+
bs2
-
+
vps
-
+
-
+
abool
-
+
aboolfloat
-
+
-
+
aboolfloat
-
+
-
+
afloat
-
+
boolstring
-
+
floatstring
-
+
intstring
-
+
stringstring
-
+
bstringstring
-
+
-
+
diff --git a/docs/test_cases/t00015_class.svg b/docs/test_cases/t00015_class.svg
index 56c26b81..d106a355 100644
--- a/docs/test_cases/t00015_class.svg
+++ b/docs/test_cases/t00015_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,51 +9,51 @@
-
-
+
+
ns1::A
-
-
+
+
ns1::ns2_v0_9_0::A
-
-
+
+
ns1::Anon
-
-
+
+
ns3::ns1::ns2::Anon
-
-
+
+
ns3::B
-
+
-
+
-
+
diff --git a/docs/test_cases/t00016_class.svg b/docs/test_cases/t00016_class.svg
index f435489c..da3a555d 100644
--- a/docs/test_cases/t00016_class.svg
+++ b/docs/test_cases/t00016_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,8 +9,8 @@
-
-
+
+
is_numeric<>
@@ -19,8 +19,8 @@
value : enum
-
-
+
+
is_numeric
@@ -31,8 +31,8 @@
value : enum
-
-
+
+
is_numeric
@@ -43,8 +43,8 @@
value : enum
-
-
+
+
is_numeric
@@ -55,8 +55,8 @@
value : enum
-
-
+
+
is_numeric
@@ -67,13 +67,13 @@
value : enum
-
+
-
+
-
+
-
+
diff --git a/docs/test_cases/t00017_class.svg b/docs/test_cases/t00017_class.svg
index 0cfafcc4..5ae0fe23 100644
--- a/docs/test_cases/t00017_class.svg
+++ b/docs/test_cases/t00017_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,176 +9,176 @@
-
-
+
+
A
-
-
+
+
B
-
-
+
+
C
-
-
+
+
D
-
-
+
+
E
-
-
+
+
F
-
-
+
+
G
-
-
+
+
H
-
-
+
+
I
-
-
+
+
J
-
-
+
+
K
-
-
+
+
R
-
+
-
+
some_int : int
-
+
-
+
some_int_pointer : int*
-
+
-
+
some_int_pointer_pointer : int**
-
+
-
+
some_int_reference : int&
-
+
-
+
R(int& some_int, C& cc, E const& ee, F&& ff, I*& ii) : void
-
+
-
+
-c
-
+
-
+
-e
-
+
-
+
-f
-
+
-
+
-i
-
+
-a
-
+
-b
-
+
-d
-
+
-g
-
+
-h
-
+
-j
-
+
-k
diff --git a/docs/test_cases/t00018_class.svg b/docs/test_cases/t00018_class.svg
index cb05a835..91d43c79 100644
--- a/docs/test_cases/t00018_class.svg
+++ b/docs/test_cases/t00018_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,125 +9,125 @@
-
-
+
+
impl::widget
-
+
-
+
n : int
-
+
-
+
draw(widget const& w) const : void
-
+
-
+
draw(widget const& w) : void
-
+
-
+
widget(int n) : void
-
-
+
+
widget
-
+
-
+
pImpl : std::unique_ptr<impl::widget>
-
+
-
+
draw() const : void
-
+
-
+
draw() : void
-
+
-
+
shown() const : bool
-
+
-
+
widget(int ) : void
-
+
-
+
~widget() : void
-
+
-
+
widget(widget&& ) : void
-
+
-
+
widget(widget const& ) : void
-
+
-
+
operator=(widget&& ) : widget&
-
+
-
+
operator=(widget const& ) : widget&
-
+
-
+
-
+
pImpl
diff --git a/docs/test_cases/t00019_class.svg b/docs/test_cases/t00019_class.svg
index 4ed88a23..3c13e3a5 100644
--- a/docs/test_cases/t00019_class.svg
+++ b/docs/test_cases/t00019_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,8 +9,8 @@
-
-
+
+
Layer2
@@ -19,51 +19,51 @@
-
+
-
+
all_calls_count() const : int
-
-
+
+
Base
-
+
-
+
Base() : void
-
+
-
+
~Base() : void
-
+
-
+
m1() : int
-
+
-
+
m2() : std::string
-
-
+
+
Layer1
@@ -72,22 +72,22 @@
-
+
-
+
m1() : int
-
+
-
+
m2() : std::string
-
-
+
+
Layer3
@@ -95,50 +95,50 @@
LowerLayer
-
+
-
+
m_m1_calls : int
-
+
-
+
m_m2_calls : int
-
+
-
+
m1() : int
-
+
-
+
m2() : std::string
-
+
-
+
m1_calls() const : int
-
+
-
+
m2_calls() const : int
-
+
Layer3
@@ -146,7 +146,7 @@
Base
-
+
Layer2
@@ -154,7 +154,7 @@
Layer3<Base>
-
+
Layer1
@@ -162,42 +162,42 @@
Layer2<Layer3<Base>>
-
-
+
+
A
-
+
-
+
layers : std::unique_ptr<Layer1<Layer2<Layer3<Base>>>>
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
layers
diff --git a/docs/test_cases/t00020_class.svg b/docs/test_cases/t00020_class.svg
index c5ae84c1..e1b1f7fe 100644
--- a/docs/test_cases/t00020_class.svg
+++ b/docs/test_cases/t00020_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,195 +9,195 @@
-
-
+
+
ProductA
-
+
-
+
~ProductA() : void
-
+
-
+
sell(int price) const = 0 : bool
-
-
+
+
ProductA1
-
+
-
+
sell(int price) const : bool
-
-
+
+
ProductA2
-
+
-
+
sell(int price) const : bool
-
-
+
+
ProductB
-
+
-
+
~ProductB() : void
-
+
-
+
buy(int price) const = 0 : bool
-
-
+
+
ProductB1
-
+
-
+
buy(int price) const : bool
-
-
+
+
ProductB2
-
+
-
+
buy(int price) const : bool
-
-
+
+
AbstractFactory
-
+
-
+
make_a() const = 0 : std::unique_ptr<ProductA>
-
+
-
+
make_b() const = 0 : std::unique_ptr<ProductB>
-
-
+
+
Factory1
-
+
-
+
make_a() const : std::unique_ptr<ProductA>
-
+
-
+
make_b() const : std::unique_ptr<ProductB>
-
-
+
+
Factory2
-
+
-
+
make_a() const : std::unique_ptr<ProductA>
-
+
-
+
make_b() const : std::unique_ptr<ProductB>
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/docs/test_cases/t00021_class.svg b/docs/test_cases/t00021_class.svg
index 260391b4..488b253a 100644
--- a/docs/test_cases/t00021_class.svg
+++ b/docs/test_cases/t00021_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,184 +9,184 @@
-
-
+
+
Visitor
-
+
-
+
~Visitor() : void
-
+
-
+
visit_A(A const& item) const = 0 : void
-
+
-
+
visit_B(B const& item) const = 0 : void
-
-
+
+
Visitor1
-
+
-
+
visit_A(A const& item) const : void
-
+
-
+
visit_B(B const& item) const : void
-
-
+
+
Visitor2
-
+
-
+
visit_A(A const& item) const : void
-
+
-
+
visit_B(B const& item) const : void
-
-
+
+
Visitor3
-
+
-
+
visit_A(A const& item) const : void
-
+
-
+
visit_B(B const& item) const : void
-
-
+
+
Item
-
+
-
+
~Item() : void
-
+
-
+
accept(Visitor const& visitor) const = 0 : void
-
-
+
+
A
-
+
-
+
accept(Visitor const& visitor) const : void
-
-
+
+
B
-
+
-
+
accept(Visitor const& visitor) const : void
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/docs/test_cases/t00022_class.svg b/docs/test_cases/t00022_class.svg
index 227a7e72..826f13fe 100644
--- a/docs/test_cases/t00022_class.svg
+++ b/docs/test_cases/t00022_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,82 +9,82 @@
-
-
+
+
A
-
+
-
+
template_method() : void
-
+
-
+
method1() = 0 : void
-
+
-
+
method2() = 0 : void
-
-
+
+
A1
-
+
-
+
method1() : void
-
+
-
+
method2() : void
-
-
+
+
A2
-
+
-
+
method1() : void
-
+
-
+
method2() : void
-
+
-
+
diff --git a/docs/test_cases/t00023_class.svg b/docs/test_cases/t00023_class.svg
index 2f4845e4..4b4cf48f 100644
--- a/docs/test_cases/t00023_class.svg
+++ b/docs/test_cases/t00023_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,111 +9,111 @@
-
-
+
+
Strategy
-
+
-
+
~Strategy() : void
-
+
-
+
algorithm() = 0 : void
-
-
+
+
StrategyA
-
+
-
+
algorithm() : void
-
-
+
+
StrategyB
-
+
-
+
algorithm() : void
-
-
+
+
StrategyC
-
+
-
+
algorithm() : void
-
-
+
+
Context
-
+
-
+
m_strategy : std::unique_ptr<Strategy>
-
+
-
+
Context(std::unique_ptr<Strategy> strategy) : void
-
+
-
+
apply() : void
-
+
-
+
-
+
-
+
-
+
m_strategy
diff --git a/docs/test_cases/t00024_class.svg b/docs/test_cases/t00024_class.svg
index 09b87f8a..125b1132 100644
--- a/docs/test_cases/t00024_class.svg
+++ b/docs/test_cases/t00024_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,126 +9,126 @@
-
-
+
+
Target
-
+
-
+
~Target() : void
-
+
-
+
m1() = 0 : void
-
+
-
+
m2() = 0 : void
-
-
+
+
Target1
-
+
-
+
m1() : void
-
+
-
+
m2() : void
-
-
+
+
Target2
-
+
-
+
m1() : void
-
+
-
+
m2() : void
-
-
+
+
Proxy
-
+
-
+
m_target : std::shared_ptr<Target>
-
+
-
+
Proxy(std::shared_ptr<Target> target) : void
-
+
-
+
m1() : void
-
+
-
+
m2() : void
-
+
-
+
-
+
-
+
m_target
-
+
diff --git a/docs/test_cases/t00025_class.svg b/docs/test_cases/t00025_class.svg
index cf70e09b..4c6cfec5 100644
--- a/docs/test_cases/t00025_class.svg
+++ b/docs/test_cases/t00025_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,52 +9,52 @@
-
-
+
+
Target1
-
+
-
+
m1() : void
-
+
-
+
m2() : void
-
-
+
+
Target2
-
+
-
+
m1() : void
-
+
-
+
m2() : void
-
-
+
+
Proxy
@@ -62,36 +62,36 @@
T
-
+
-
+
m_target : std::shared_ptr<T>
-
+
-
+
Proxy(std::shared_ptr<T> target) : void
-
+
-
+
m1() : void
-
+
-
+
m2() : void
-
+
Proxy
@@ -99,7 +99,7 @@
Target1
-
+
Proxy
@@ -107,41 +107,41 @@
Target2
-
-
+
+
ProxyHolder
-
+
-
+
proxy1 : Proxy<Target1>
-
+
-
+
proxy2 : Proxy<Target2>
-
+
-
+
-
+
-
+
-
+
proxy1
-
+
proxy2
diff --git a/docs/test_cases/t00026_class.svg b/docs/test_cases/t00026_class.svg
index 3e7869b9..a04faa43 100644
--- a/docs/test_cases/t00026_class.svg
+++ b/docs/test_cases/t00026_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,8 +9,8 @@
-
-
+
+
Memento
@@ -18,30 +18,30 @@
T
-
+
-
+
m_value : T
-
+
-
+
Memento(T&& v) : void
-
+
-
+
value() const : T
-
-
+
+
Originator
@@ -49,51 +49,51 @@
T
-
+
-
+
m_value : T
-
+
-
+
Originator(T&& v) : void
-
+
-
+
memoize_value() const : Memento<T>
-
+
-
+
load(Memento<T> const& m) : void
-
+
-
+
print() const : void
-
+
-
+
set(T&& v) : void
-
-
+
+
Caretaker
@@ -101,29 +101,29 @@
T
-
+
-
+
m_mementos : std::unordered_map<std::string,Memento<T>>
-
+
-
+
state(std::string const& n) : Memento<T>&
-
+
-
+
set_state(std::string const& s, Memento<T>&& m) : void
-
+
Caretaker
@@ -131,7 +131,7 @@
std::string
-
+
Originator
@@ -139,45 +139,45 @@
std::string
-
-
+
+
StringMemento
-
+
-
+
caretaker : Caretaker<std::string>
-
+
-
+
originator : Originator<std::string>
-
+
-
+
-
+
m_mementos
-
+
-
+
-
+
caretaker
-
+
originator
diff --git a/docs/test_cases/t00027_class.svg b/docs/test_cases/t00027_class.svg
index c4550bef..69bd3b0f 100644
--- a/docs/test_cases/t00027_class.svg
+++ b/docs/test_cases/t00027_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,30 +9,30 @@
-
-
+
+
Shape
-
+
-
+
display() = 0 : void
-
+
-
+
~Shape() : void
-
-
+
+
Line
@@ -41,15 +41,15 @@
-
+
-
+
display() : void
-
-
+
+
Text
@@ -58,30 +58,30 @@
-
+
-
+
display() : void
-
-
+
+
ShapeDecorator
-
+
-
+
display() = 0 : void
-
-
+
+
Color
@@ -90,15 +90,15 @@
-
+
-
+
display() : void
-
-
+
+
Weight
@@ -107,14 +107,14 @@
-
+
-
+
display() : void
-
+
Line
@@ -122,7 +122,7 @@
Color,Weight
-
+
Line
@@ -130,7 +130,7 @@
Color
-
+
Text
@@ -138,7 +138,7 @@
Color,Weight
-
+
Text
@@ -146,71 +146,71 @@
Color
-
-
+
+
Window
-
+
-
+
border : Line<Color,Weight>
-
+
-
+
divider : Line<Color>
-
+
-
+
title : Text<Color,Weight>
-
+
-
+
description : Text<Color>
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
border
-
+
divider
-
+
title
-
+
description
diff --git a/docs/test_cases/t00028_class.svg b/docs/test_cases/t00028_class.svg
index 9cdb708b..5842e120 100644
--- a/docs/test_cases/t00028_class.svg
+++ b/docs/test_cases/t00028_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,68 +9,68 @@
-
-
+
+
A
-
+
A class note.
-
+
A class note.
-
-
+
+
B
-
+
B class note.
-
+
B class note.
-
-
+
+
C
-
+
C class note.
-
+
C class note.
-
-
+
+
D
-
+
D
class
note.
-
+
D
class
note.
-
-
+
+
E
@@ -78,27 +78,27 @@
T
-
+
-
+
param : T
-
+
E template class note.
-
-
+
+
G
-
-
+
+
F
@@ -108,13 +108,13 @@
three
-
+
F enum note.
-
+
F enum note.
-
+
E
@@ -122,97 +122,97 @@
int
-
-
+
+
R
-
+
-
+
aaa : A
-
+
-
+
bbb : B*
-
+
-
+
ccc : C&
-
+
-
+
ddd : std::vector<std::shared_ptr<D>>
-
+
-
+
eee : E<int>
-
+
-
+
ggg : G**
-
+
-
+
R(C& c) : void
-
+
R class note.
-
+
R class note.
-
-
-
-
+
+
+
+
-
+
-
+
ccc
-
+
aaa
-
+
bbb
-
+
ddd
-
+
eee
-
+
ggg
diff --git a/docs/test_cases/t00029_class.svg b/docs/test_cases/t00029_class.svg
index 5ffa5aec..41ca8178 100644
--- a/docs/test_cases/t00029_class.svg
+++ b/docs/test_cases/t00029_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,16 +9,16 @@
-
-
+
+
A
-
-
+
+
C
@@ -26,16 +26,16 @@
T
-
+
-
+
param : T
-
-
+
+
E
@@ -45,72 +45,72 @@
three
-
-
+
+
G1
-
-
+
+
G2
-
-
+
+
G3
-
-
+
+
G4
-
-
+
+
R
-
+
-
+
g1 : G1
-
+
-
+
g3 : G3&
-
+
-
+
g4 : std::shared_ptr<G4>
-
+
g1
-
+
g4
diff --git a/docs/test_cases/t00030_class.svg b/docs/test_cases/t00030_class.svg
index aed7d8bc..2579f63c 100644
--- a/docs/test_cases/t00030_class.svg
+++ b/docs/test_cases/t00030_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,91 +9,91 @@
-
-
+
+
A
-
-
+
+
B
-
-
+
+
C
-
-
+
+
D
-
-
+
+
R
-
+
-
+
aaa : A
-
+
-
+
bbb : std::vector<B>
-
+
-
+
ccc : std::vector<C>
-
+
-
+
ddd : D
-
+
aaa
-
+
bbb
0..1
1..*
-
+
ccc
0..1
1..5
-
+
ddd
diff --git a/docs/test_cases/t00031_class.svg b/docs/test_cases/t00031_class.svg
index d864bf96..f53fc698 100644
--- a/docs/test_cases/t00031_class.svg
+++ b/docs/test_cases/t00031_class.svg
@@ -1,33 +1,33 @@
-
+
-
+
-
+
-
-
-
+
+
+
A
-
-
+
+
B
@@ -37,8 +37,8 @@
three
-
-
+
+
@@ -47,23 +47,23 @@
T
-
+
-
+
ttt : T
-
-
+
+
D
-
+
C
@@ -71,57 +71,57 @@
int
-
-
+
+
R
-
+
-
+
aaa : A*
-
+
-
+
bbb : std::vector<B>
-
+
-
+
ccc : C<int>
-
+
-
+
ddd : D*
-
+
-
+
aaa
-
+
bbb
-
+
ccc
-
+
ddd
diff --git a/docs/test_cases/t00032_class.svg b/docs/test_cases/t00032_class.svg
index 171a0502..43b21ad3 100644
--- a/docs/test_cases/t00032_class.svg
+++ b/docs/test_cases/t00032_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,69 +9,69 @@
-
-
+
+
Base
-
-
+
+
TBase
-
-
+
+
A
-
+
-
+
operator()() : void
-
-
+
+
B
-
+
-
+
operator()() : void
-
-
+
+
C
-
+
-
+
operator()() : void
-
-
+
+
Overload
@@ -79,15 +79,15 @@
T,L,Ts...
-
+
-
+
counter : L
-
+
Overload
@@ -95,42 +95,42 @@
TBase,int,A,B,C
-
-
+
+
R
-
+
-
+
overload : Overload<TBase,int,A,B,C>
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
overload
diff --git a/docs/test_cases/t00033_class.svg b/docs/test_cases/t00033_class.svg
index 158e08ca..38bccc8c 100644
--- a/docs/test_cases/t00033_class.svg
+++ b/docs/test_cases/t00033_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,8 +9,8 @@
-
-
+
+
A
@@ -18,16 +18,16 @@
T
-
+
-
+
aaa : T
-
-
+
+
B
@@ -35,16 +35,16 @@
T
-
+
-
+
bbb : T
-
-
+
+
C
@@ -52,30 +52,30 @@
T
-
+
-
+
ccc : T
-
-
+
+
D
-
+
-
+
ddd : int
-
+
C
@@ -83,7 +83,7 @@
D
-
+
B
@@ -91,7 +91,7 @@
std::unique_ptr<C<D>>
-
+
A
@@ -99,34 +99,34 @@
B<std::unique_ptr<C<D>>>
-
-
+
+
R
-
+
-
+
abc : A<B<std::unique_ptr<C<D>>>>
-
+
-
+
-
+
-
+
-
+
-
+
-
+
abc
diff --git a/docs/test_cases/t00034_class.svg b/docs/test_cases/t00034_class.svg
index c1534850..3cfdcfc1 100644
--- a/docs/test_cases/t00034_class.svg
+++ b/docs/test_cases/t00034_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,30 +9,30 @@
-
-
+
+
Void
-
+
-
+
operator==(Void const& ) const : bool
-
+
-
+
operator!=(Void const& ) const : bool
-
-
+
+
lift_void
@@ -41,8 +41,8 @@
-
-
+
+
lift_void
@@ -51,8 +51,8 @@
-
-
+
+
drop_void
@@ -61,8 +61,8 @@
-
-
+
+
drop_void
@@ -71,43 +71,43 @@
-
-
+
+
A
-
-
+
+
R
-
+
-
+
la : lift_void_t<A>*
-
+
-
+
lv : lift_void_t<void>*
-
+
-
+
-
+
-
+
la
diff --git a/docs/test_cases/t00035_class.svg b/docs/test_cases/t00035_class.svg
index 4950dcd5..62f1388c 100644
--- a/docs/test_cases/t00035_class.svg
+++ b/docs/test_cases/t00035_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,40 +9,40 @@
-
-
+
+
Top
-
-
+
+
Left
-
-
+
+
Center
-
-
+
+
Bottom
-
-
+
+
Right
diff --git a/docs/test_cases/t00036_class.svg b/docs/test_cases/t00036_class.svg
index bbf2a2d4..890ff27b 100644
--- a/docs/test_cases/t00036_class.svg
+++ b/docs/test_cases/t00036_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,23 +9,23 @@
-
+
ns1
-
+
ns11
-
+
ns111
-
+
ns2
-
+
ns22
-
-
+
+
E
@@ -34,8 +34,8 @@
yellow
-
-
+
+
A
@@ -43,15 +43,15 @@
T
-
+
-
+
a : T
-
+
A
@@ -59,32 +59,32 @@
int
-
-
+
+
B
-
+
-
+
a_int : A<int>
-
-
+
+
C
-
+
-
+
a_int
diff --git a/docs/test_cases/t00037_class.svg b/docs/test_cases/t00037_class.svg
index 0c81b416..be84b6dc 100644
--- a/docs/test_cases/t00037_class.svg
+++ b/docs/test_cases/t00037_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,84 +9,84 @@
-
-
+
+
ST
-
+
-
+
dimensions : «anonymous»
-
-
+
+
<<anonymous>>
-
+
-
+
t : double
-
+
-
+
x : double
-
+
-
+
y : double
-
+
-
+
z : double
-
-
+
+
A
-
+
-
+
st : ST
-
+
-
+
A() : void
-
+
-
+
st
diff --git a/docs/test_cases/t00038_class.svg b/docs/test_cases/t00038_class.svg
index c8ba966e..f46ef8ca 100644
--- a/docs/test_cases/t00038_class.svg
+++ b/docs/test_cases/t00038_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,8 +9,8 @@
-
-
+
+
thirdparty::ns1::color_t
@@ -20,16 +20,16 @@
blue
-
-
+
+
thirdparty::ns1::E
-
-
+
+
property_t
@@ -39,47 +39,47 @@
property_c
-
-
+
+
A
-
-
+
+
B
-
-
+
+
C
-
-
+
+
key_t
-
+
-
+
key : std::string
-
-
+
+
map
@@ -88,8 +88,8 @@
-
-
+
+
map
@@ -98,8 +98,8 @@
-
-
+
+
map
@@ -108,8 +108,8 @@
-
-
+
+
map
@@ -118,8 +118,8 @@
-
-
+
+
map
@@ -128,31 +128,31 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/docs/test_cases/t00039_class.svg b/docs/test_cases/t00039_class.svg
index e1cd1d2d..32ccadf8 100644
--- a/docs/test_cases/t00039_class.svg
+++ b/docs/test_cases/t00039_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,95 +9,95 @@
-
-
+
+
C
-
-
+
+
D
-
-
+
+
E
-
-
+
+
CD
-
-
+
+
DE
-
-
+
+
CDE
-
-
+
+
A
-
-
+
+
AA
-
-
+
+
AAA
-
+
-
+
b : B*
-
-
+
+
ns2::AAAA
-
-
+
+
ns3::F
@@ -105,16 +105,16 @@
T
-
+
-
+
t : T*
-
-
+
+
ns3::FF
@@ -122,16 +122,16 @@
T,M
-
+
-
+
m : M*
-
-
+
+
ns3::FE
@@ -139,16 +139,16 @@
T,M
-
+
-
+
m : M*
-
-
+
+
ns3::FFF
@@ -156,39 +156,39 @@
T,M,N
-
+
-
+
n : N*
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/docs/test_cases/t00040_class.svg b/docs/test_cases/t00040_class.svg
index 9e0301e3..28d89287 100644
--- a/docs/test_cases/t00040_class.svg
+++ b/docs/test_cases/t00040_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,76 +9,76 @@
-
-
+
+
A
-
+
-
+
ii_ : int
-
+
-
+
get_a() : int
-
-
+
+
AA
-
-
+
+
AAA
-
+
-
+
b : B*
-
+
-
+
get_aaa() : int
-
-
+
+
R
-
+
-
+
foo(A* a) : void
-
+
-
+
diff --git a/docs/test_cases/t00041_class.svg b/docs/test_cases/t00041_class.svg
index 445efc90..63da0feb 100644
--- a/docs/test_cases/t00041_class.svg
+++ b/docs/test_cases/t00041_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,116 +9,116 @@
-
-
+
+
R
-
-
+
+
D
-
+
-
+
rr : RR*
-
-
+
+
E
-
-
+
+
F
-
-
+
+
RR
-
+
-
+
e : E*
-
+
-
+
f : F*
-
-
+
+
RRR
-
-
+
+
ns1::N
-
-
+
+
ns1::NN
-
-
+
+
ns1::NM
-
+
rr
-
+
+e
-
+
+f
-
+
-
+
-
+
-
+
diff --git a/docs/test_cases/t00042_class.svg b/docs/test_cases/t00042_class.svg
index b07c2c3d..ec26e479 100644
--- a/docs/test_cases/t00042_class.svg
+++ b/docs/test_cases/t00042_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,8 +9,8 @@
-
-
+
+
A
@@ -18,16 +18,16 @@
T
-
+
-
+
a : T
-
-
+
+
B
@@ -35,18 +35,18 @@
T,K
-
+
-
+
b : T
-
+
-
+
bb : K
diff --git a/docs/test_cases/t00043_class.svg b/docs/test_cases/t00043_class.svg
index b873af71..13404b83 100644
--- a/docs/test_cases/t00043_class.svg
+++ b/docs/test_cases/t00043_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,189 +9,189 @@
-
+
dependants
-
+
dependencies
-
-
+
+
A
-
-
+
+
B
-
+
-
+
b(dependants::A* a) : void
-
-
+
+
BB
-
+
-
+
bb(dependants::A* a) : void
-
-
+
+
C
-
+
-
+
c(dependants::B* b) : void
-
-
+
+
D
-
+
-
+
d(dependants::C* c) : void
-
+
-
+
dd(dependants::BB* bb) : void
-
-
+
+
E
-
+
-
+
e(dependants::D* d) : void
-
-
+
+
G
-
-
+
+
GG
-
-
+
+
H
-
+
-
+
h(dependencies::G* g) : void
-
+
-
+
hh(dependencies::GG* gg) : void
-
-
+
+
I
-
+
-
+
i(dependencies::H* h) : void
-
-
+
+
J
-
+
-
+
i(dependencies::I* i) : void
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/docs/test_cases/t00044_class.svg b/docs/test_cases/t00044_class.svg
index 1ec008ba..7f004a88 100644
--- a/docs/test_cases/t00044_class.svg
+++ b/docs/test_cases/t00044_class.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,8 +9,8 @@
-
-
+
+
sink
@@ -19,8 +19,8 @@
-
-
+
+
signal_handler
@@ -29,8 +29,8 @@
-
-
+
+
sink
@@ -38,29 +38,29 @@
Ret,Args...,A
-
+
-
+
signal : signal_t*
-
+
-
+
sink(sink<signal_handler<type-parameter-0-0 (type-parameter-0-1...), type-parameter-0-2>>::signal_t& sh) : void
-
+
signal_handler
-
-
+
+
signal_handler
diff --git a/docs/test_cases/t00045.md b/docs/test_cases/t00045.md
new file mode 100644
index 00000000..50268500
--- /dev/null
+++ b/docs/test_cases/t00045.md
@@ -0,0 +1,60 @@
+# t00045 - Test case for root namespace handling
+## Config
+```yaml
+compilation_database_dir: ..
+output_directory: puml
+diagrams:
+ t00045_class:
+ type: class
+ glob:
+ - ../../tests/t00045/t00045.cc
+ exclude:
+ namespaces:
+ - std
+```
+## Source code
+File t00045.cc
+```cpp
+class A {
+};
+
+class AA {
+};
+
+namespace ns1 {
+
+class A {
+};
+
+namespace ns2 {
+
+class A {
+};
+
+class B : public A {
+};
+
+class C : public ns1::A {
+};
+
+class D : public ns1::ns2::A {
+};
+
+class E : public ::A {
+};
+
+class R {
+public:
+ A *a;
+ ns1::A *ns1_a;
+ ns1::ns2::A *ns1_ns2_a;
+ ::A *root_a;
+
+ void foo(::AA &aa) { (void)aa; }
+};
+}
+}
+
+```
+## Generated UML diagrams
+
diff --git a/docs/test_cases/t00045_class.svg b/docs/test_cases/t00045_class.svg
new file mode 100644
index 00000000..7ab2aa40
--- /dev/null
+++ b/docs/test_cases/t00045_class.svg
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A
+
+
+
+
+
+
+
+ AA
+
+
+
+
+
+
+
+ ns1::A
+
+
+
+
+
+
+
+ ns1::ns2::A
+
+
+
+
+
+
+
+ ns1::ns2::B
+
+
+
+
+
+
+
+ ns1::ns2::C
+
+
+
+
+
+
+
+ ns1::ns2::D
+
+
+
+
+
+
+
+ ns1::ns2::E
+
+
+
+
+
+
+
+ ns1::ns2::R
+
+
+
+
+
+
+
+ a : ns1::ns2::A*
+
+
+
+
+
+
+ ns1_a : ns1::A*
+
+
+
+
+
+
+ ns1_ns2_a : ns1::ns2::A*
+
+
+
+
+
+
+ root_a : ::A*
+
+
+
+
+
+
+
+ foo(AA& aa) : void
+
+
+
+
+
+
+
+
+
+
+
+ +a
+
+
+
+ ns1_ns2_a
+
+
+
+ ns1_a
+
+
+
+ root_a
+
+
+
+
diff --git a/docs/test_cases/t30001_package.svg b/docs/test_cases/t30001_package.svg
index 3f4579ac..62254d8b 100644
--- a/docs/test_cases/t30001_package.svg
+++ b/docs/test_cases/t30001_package.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,67 +9,67 @@
-
-
+
+
A
-
-
+
+
AA
-
-
+
+
B
-
-
+
+
AA
-
-
+
+
AAA
-
-
+
+
BBB
-
-
+
+
BB
-
-
+
+
AAA
-
-
+
+
BBB
-
-
+
+
BB
-
+
A AAA note...
-
+
This is namespace AA in namespace A
-
+
This is namespace AA in namespace B
-
-
-
+
+
+
diff --git a/docs/test_cases/t30002_package.svg b/docs/test_cases/t30002_package.svg
index f8f6d6ee..bd67999c 100644
--- a/docs/test_cases/t30002_package.svg
+++ b/docs/test_cases/t30002_package.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,135 +9,135 @@
-
-
+
+
A
-
-
+
+
AA
-
-
+
+
B
-
-
+
+
BB
-
-
+
+
A1
-
-
+
+
A2
-
-
+
+
A3
-
-
+
+
A4
-
-
+
+
A5
-
-
+
+
A6
-
-
+
+
A7
-
-
+
+
A8
-
-
+
+
A9
-
-
+
+
A10
-
-
+
+
A11
-
-
+
+
A12
-
-
+
+
A13
-
-
+
+
A14
-
-
+
+
A15
-
-
+
+
BBB
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/docs/test_cases/t30003_package.svg b/docs/test_cases/t30003_package.svg
index 4f0838c6..c7f6106d 100644
--- a/docs/test_cases/t30003_package.svg
+++ b/docs/test_cases/t30003_package.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,39 +9,39 @@
-
-
+
+
ns1
-
-
+
+
ns3
«deprecated»
-
-
+
+
ns1
-
-
+
+
ns2_v1_0_0
-
-
+
+
ns2_v0_9_0
«deprecated»
-
-
+
+
ns2
-
+
diff --git a/docs/test_cases/t30004_package.svg b/docs/test_cases/t30004_package.svg
index 7b05c3b5..376c7abf 100644
--- a/docs/test_cases/t30004_package.svg
+++ b/docs/test_cases/t30004_package.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,46 +9,46 @@
-
-
+
+
A
-
+
Package AAA.
-
+
Package BBB.
-
+
CCCC package note.
-
+
We skipped DDD.
-
-
+
+
AAA
-
-
+
+
BBB
-
-
+
+
CCC
-
-
+
+
EEE
-
-
-
-
+
+
+
+
diff --git a/docs/test_cases/t30005_package.svg b/docs/test_cases/t30005_package.svg
index ed277a85..9df3027c 100644
--- a/docs/test_cases/t30005_package.svg
+++ b/docs/test_cases/t30005_package.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,54 +9,54 @@
-
-
+
+
A
-
-
+
+
AA
-
-
+
+
B
-
-
+
+
BB
-
-
+
+
C
-
-
+
+
CC
-
-
+
+
AAA
-
-
+
+
BBB
-
-
+
+
CCC
-
+
-
+
diff --git a/docs/test_cases/t30006_package.svg b/docs/test_cases/t30006_package.svg
index 4937ab0c..358bac44 100644
--- a/docs/test_cases/t30006_package.svg
+++ b/docs/test_cases/t30006_package.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,28 +9,28 @@
-
-
+
+
B
-
-
+
+
A
-
-
+
+
C
-
+
Top A note.
-
-
+
+
-
+
diff --git a/docs/test_cases/t30007_package.svg b/docs/test_cases/t30007_package.svg
index 0c7946e9..55d52ff2 100644
--- a/docs/test_cases/t30007_package.svg
+++ b/docs/test_cases/t30007_package.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,33 +9,33 @@
-
-
+
+
A
-
-
+
+
B
-
-
+
+
AA
-
-
+
+
C
-
+
Compare layout with t30006.
-
-
+
+
-
+
diff --git a/docs/test_cases/t30008_package.svg b/docs/test_cases/t30008_package.svg
index 94f5fc61..2c981b56 100644
--- a/docs/test_cases/t30008_package.svg
+++ b/docs/test_cases/t30008_package.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,53 +9,53 @@
-
-
+
+
dependants
-
-
+
+
dependencies
-
-
+
+
A
-
-
+
+
B
-
-
+
+
C
-
-
+
+
D
-
-
+
+
E
-
-
+
+
F
-
+
-
+
-
+
-
+
diff --git a/docs/test_cases/t40001_include.svg b/docs/test_cases/t40001_include.svg
index 480eb53a..e31a450e 100644
--- a/docs/test_cases/t40001_include.svg
+++ b/docs/test_cases/t40001_include.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,58 +9,58 @@
-
+
src
-
+
include
-
+
lib1
-
-
+
+
t40001.cc
-
-
+
+
t40001_include1.h
-
-
+
+
lib1.h
-
+
string
-
+
vector
-
+
cppast/cpp_preprocessor.hpp
-
+
This is a lib1 include dir
-
+
This is a t40001_include1.h include file
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
diff --git a/docs/test_cases/t40002_include.svg b/docs/test_cases/t40002_include.svg
index c8e8ede5..6a8ba06d 100644
--- a/docs/test_cases/t40002_include.svg
+++ b/docs/test_cases/t40002_include.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,58 +9,58 @@
-
+
src
-
+
lib1
-
+
lib2
-
+
include
-
+
lib1
-
+
lib2
-
-
+
+
t40002.cc
-
-
+
+
lib1.cc
-
-
+
+
lib2.cc
-
-
+
+
lib1.h
-
-
+
+
lib2.h
-
+
-
+
-
+
-
+
-
+
diff --git a/docs/test_cases/t40003_include.svg b/docs/test_cases/t40003_include.svg
index 7e414e44..43a7b168 100644
--- a/docs/test_cases/t40003_include.svg
+++ b/docs/test_cases/t40003_include.svg
@@ -1,6 +1,6 @@
-
+
@@ -9,84 +9,84 @@
-
+
include
-
+
dependants
-
+
dependencies
-
+
src
-
+
dependants
-
+
dependencies
-
-
+
+
t3.h
-
-
+
+
t2.h
-
-
+
+
t1.h
-
-
+
+
t3.h
-
-
+
+
t2.h
-
-
+
+
t1.h
-
-
+
+
t5.h
-
-
+
+
t1.cc
-
-
+
+
t2.cc
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+