Embed module dependency graph in Doxygen docs
[alexxy/gromacs.git] / docs / doxygen / lib / modulegraph.md
1 Module dependency graph {#page_modulegraph}
2 =======================
3
4 The graph below shows the dependencies between the source code modules,
5 computed from include statements in the code.
6 For documented modules (those that do not have a gray background), clicking on
7 the module takes you to the module documentation.
8 Legend for the graph can be found below the graph.
9
10 \ifnot xml
11 \dotfile module-deps.dot
12 \endif
13
14 Legend
15 ======
16
17 The graph below annotates the colors and line styles used in the module
18 dependency graph above.  More detailed textual annotation is below the graph.
19
20 \dot
21 digraph legend {
22     node [fontname="FreeSans",fontsize=10,height=.2,shape=box]
23     edge [fontname="FreeSans",fontsize=10]
24     rankdir = "LR"
25     subgraph cluster_nodes {
26         label = "Nodes"
27         legacy    [label="undocumented", fillcolor=grey75, style="filled"]
28         analysis  [label="analysis", fillcolor="0 .2 1", style="filled"]
29         utility   [label="utility", fillcolor=".08 .2 1", style="filled"]
30         mdrun     [label="mdrun", fillcolor=".75 .2 1", style="filled"]
31         installed [label="installed", color=".66 .5 1", penwidth=3]
32     }
33     subgraph cluster_edges {
34         label = "Edges"
35         node [label="<any>"]
36         invalid1 -> invalid2 [label="invalid", color=red]
37         legacy1 -> legacy2 [label="legacy", color=grey75]
38         legacy2 [label="undoc"]
39         public1 -> public2 [label="public", color=black]
40         public1 [label="public"]
41         public2 [label="public"]
42         library1 -> library2 [label="library", color=".66 .8 .8"]
43         library1 [label="library"]
44         pubimpl1 -> pubimpl2 [color=black, style=dashed]
45         pubimpl1 [label="internal"]
46         pubimpl2 [label="public"]
47         libimpl1 -> libimpl2 [color=".66 .8 .8", style=dashed]
48         libimpl1 [label="internal"]
49         libimpl2 [label="library"]
50         test1 -> test2 [label="test", color=".33 .8 .8", style=dashed]
51         test1 [label="test"]
52     }
53     legacy -> invalid1 [style="invis"]
54 }
55 \enddot
56
57 Node colors:
58 <dl>
59 <dt>gray background</dt>
60 <dd>undocumented module</dd>
61 <dt>orange background</dt>
62 <dd>documented utility modules</dd>
63 <dt>red background</dt>
64 <dd>documented analysis modules</dd>
65 <dt>violet background</dt>
66 <dd>documented MD execution modules</dd>
67 <dt>light blue border</dt>
68 <dd>module contains public API (installed) headers</dd>
69 </dl>
70
71 Edge colors (an edge with a certain color indicates that types above it in the
72 list are not present):
73 <dl>
74 <dt>red</dt>
75 <dd>invalid dependency</dd>
76 <dt>gray</dt>
77 <dd>legacy dependency
78 (dependency on undocumented file, or to undocumented directories)</dd>
79 <dt>solid black</dt>
80 <dd>public header depends on the other module</dd>
81 <dt>solid blue</dt>
82 <dd>library header depends on the other module</dd>
83 <dt>dashed blue</dt>
84 <dd>source file depends on library header in the other module</dd>
85 <dt>dashed black</dt>
86 <dd>source file depends on public header in the other module</dd>
87 <dt>dashed green</dt>
88 <dd>test file depends on the other module</dd>
89 </dl>