|
Packit Service |
50c9f2 |
/******************************************************************************
|
|
Packit Service |
50c9f2 |
*
|
|
Packit Service |
50c9f2 |
*
|
|
Packit Service |
50c9f2 |
*
|
|
Packit Service |
50c9f2 |
* Copyright (C) 1997-2015 by Dimitri van Heesch.
|
|
Packit Service |
50c9f2 |
*
|
|
Packit Service |
50c9f2 |
* Permission to use, copy, modify, and distribute this software and its
|
|
Packit Service |
50c9f2 |
* documentation under the terms of the GNU General Public License is hereby
|
|
Packit Service |
50c9f2 |
* granted. No representations are made about the suitability of this software
|
|
Packit Service |
50c9f2 |
* for any purpose. It is provided "as is" without express or implied warranty.
|
|
Packit Service |
50c9f2 |
* See the GNU General Public License for more details.
|
|
Packit Service |
50c9f2 |
*
|
|
Packit Service |
50c9f2 |
* Documents produced by Doxygen are derivative works derived from the
|
|
Packit Service |
50c9f2 |
* input used in their production; they are not affected by this license.
|
|
Packit Service |
50c9f2 |
*
|
|
Packit Service |
50c9f2 |
*/
|
|
Packit Service |
50c9f2 |
/*! \page diagrams Graphs and diagrams
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
Doxygen has built-in support to generate inheritance diagrams for C++
|
|
Packit Service |
50c9f2 |
classes.
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
Doxygen can use the "dot" tool from graphviz to generate
|
|
Packit Service |
50c9f2 |
more advanced diagrams and graphs. Graphviz is an open-source,
|
|
Packit Service |
50c9f2 |
cross-platform graph drawing toolkit and can be found
|
|
Packit Service |
50c9f2 |
at http://www.graphviz.org/
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
If you have the "dot" tool in the path, you can set
|
|
Packit Service |
50c9f2 |
\ref cfg_have_dot "HAVE_DOT" to \c YES in the configuration file to
|
|
Packit Service |
50c9f2 |
let doxygen use it.
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
Doxygen uses the "dot" tool to generate the following graphs:
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
A graphical representation of the class hierarchy will be drawn, along
|
|
Packit Service |
50c9f2 |
with the textual one. Currently this feature is supported for HTML only.\n
|
|
Packit Service |
50c9f2 |
Warning: When you have a very large class hierarchy where many
|
|
Packit Service |
50c9f2 |
classes derive from a common base class, the resulting image may become
|
|
Packit Service |
50c9f2 |
too big to handle for some browsers.
|
|
Packit Service |
50c9f2 |
An inheritance graph will be generated for each documented class showing the
|
|
Packit Service |
50c9f2 |
direct and indirect inheritance relations. This disables the
|
|
Packit Service |
50c9f2 |
generation of the built-in class inheritance diagrams.
|
|
Packit Service |
50c9f2 |
An include dependency graph is generated for each documented file that
|
|
Packit Service |
50c9f2 |
includes at least one other file. This feature is currently supported
|
|
Packit Service |
50c9f2 |
for HTML and RTF only.
|
|
Packit Service |
50c9f2 |
An inverse include dependency graph is also generated showing for
|
|
Packit Service |
50c9f2 |
a (header) file, which other files include it.
|
|
Packit Service |
50c9f2 |
A graph is drawn for each documented class and struct that shows:
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
the inheritance relations with base classes.
|
|
Packit Service |
50c9f2 |
the usage relations with other structs and classes (e.g.
|
|
Packit Service |
50c9f2 |
class \c A has a member variable \c m_a of type class \c B, then
|
|
Packit Service |
50c9f2 |
\c A has an arrow to \c B with \c m_a as label).
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
if \ref cfg_call_graph "CALL_GRAPH" is set to YES, a
|
|
Packit Service |
50c9f2 |
graphical call graph is drawn for each function showing the
|
|
Packit Service |
50c9f2 |
functions that the function directly or indirectly calls
|
|
Packit Service |
50c9f2 |
(see also section \ref cmdcallgraph "\\callgraph" and
|
|
Packit Service |
50c9f2 |
section \ref cmdhidecallgraph "\\hidecallgraph").
|
|
Packit Service |
50c9f2 |
if \ref cfg_caller_graph "CALLER_GRAPH" is set to YES, a
|
|
Packit Service |
50c9f2 |
graphical caller graph is drawn for each function showing the
|
|
Packit Service |
50c9f2 |
functions that the function is directly or indirectly called by
|
|
Packit Service |
50c9f2 |
(see also section \ref cmdcallergraph "\\callergraph" and
|
|
Packit Service |
50c9f2 |
section \ref cmdhidecallergraph "\\hidecallergraph").
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
Using a \ref customize "layout file" you can determine which of the
|
|
Packit Service |
50c9f2 |
graphs are actually shown.
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
The options \ref cfg_dot_graph_max_nodes "DOT_GRAPH_MAX_NODES" and
|
|
Packit Service |
50c9f2 |
\ref cfg_max_dot_graph_depth "MAX_DOT_GRAPH_DEPTH" can be used to
|
|
Packit Service |
50c9f2 |
limit the size of the various graphs.
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
The elements in the class diagrams in HTML and RTF
|
|
Packit Service |
50c9f2 |
have the following meaning:
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
A \b yellow box indicates a class. A box can have a
|
|
Packit Service |
50c9f2 |
little marker in the lower right corner to indicate that the class
|
|
Packit Service |
50c9f2 |
contains base classes that are hidden.
|
|
Packit Service |
50c9f2 |
For the class diagrams the maximum tree width is currently 8 elements.
|
|
Packit Service |
50c9f2 |
If a tree is wider some nodes will be hidden.
|
|
Packit Service |
50c9f2 |
If the box is filled with a
|
|
Packit Service |
50c9f2 |
dashed pattern the inheritance relation is virtual.
|
|
Packit Service |
50c9f2 |
A \b white box indicates that the documentation of the class
|
|
Packit Service |
50c9f2 |
is currently shown.
|
|
Packit Service |
50c9f2 |
A \b gray box indicates an undocumented class.
|
|
Packit Service |
50c9f2 |
A solid dark blue arrow indicates public inheritance.
|
|
Packit Service |
50c9f2 |
A dashed dark green arrow indicates protected inheritance.
|
|
Packit Service |
50c9f2 |
A dotted dark green arrow indicates private inheritance.
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
The elements in the class diagram in \LaTeX have the
|
|
Packit Service |
50c9f2 |
following meaning:
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
A \b white box indicates a class.
|
|
Packit Service |
50c9f2 |
A \b marker in the lower right corner of the box indicates that the
|
|
Packit Service |
50c9f2 |
class has base classes that are hidden.
|
|
Packit Service |
50c9f2 |
If the box has a \b dashed border this indicates virtual inheritance.
|
|
Packit Service |
50c9f2 |
A \b solid arrow indicates public inheritance.
|
|
Packit Service |
50c9f2 |
A \b dashed arrow indicates protected inheritance.
|
|
Packit Service |
50c9f2 |
A \b dotted arrow indicates private inheritance.
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
The elements in the graphs generated by the dot tool have the following
|
|
Packit Service |
50c9f2 |
meaning:
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
A \b white box indicates a class or struct or file.
|
|
Packit Service |
50c9f2 |
A box with a \b red border indicates a node that has
|
|
Packit Service |
50c9f2 |
\e more arrows than are shown!
|
|
Packit Service |
50c9f2 |
In other words: the graph is \e truncated with respect to this node.
|
|
Packit Service |
50c9f2 |
The reason why a graph is sometimes truncated is to prevent images
|
|
Packit Service |
50c9f2 |
from becoming too large.
|
|
Packit Service |
50c9f2 |
For the graphs generated with dot doxygen tries
|
|
Packit Service |
50c9f2 |
to limit the width of the resulting image to 1024 pixels.
|
|
Packit Service |
50c9f2 |
A \b black box indicates that the class' documentation is currently shown.
|
|
Packit Service |
50c9f2 |
A dark blue arrow indicates an include relation (for the
|
|
Packit Service |
50c9f2 |
include dependency graph) or public inheritance (for the other graphs).
|
|
Packit Service |
50c9f2 |
A dark green arrow indicates protected inheritance.
|
|
Packit Service |
50c9f2 |
A dark red arrow indicates private inheritance.
|
|
Packit Service |
50c9f2 |
A purple dashed arrow indicated a "usage" relation, the
|
|
Packit Service |
50c9f2 |
edge of the arrow is labeled with the variable(s) responsible for the
|
|
Packit Service |
50c9f2 |
relation.
|
|
Packit Service |
50c9f2 |
Class \c A uses class \c B, if class \c A has a member variable \c m
|
|
Packit Service |
50c9f2 |
of type C, where B is a subtype of C (e.g. `C` could be `B`, `B*`, `T*`).
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
Here are a couple of header files that together show the various diagrams
|
|
Packit Service |
50c9f2 |
that doxygen can generate:
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
diagrams_a.h
|
|
Packit Service |
50c9f2 |
\include diagrams_a.h
|
|
Packit Service |
50c9f2 |
diagrams_b.h
|
|
Packit Service |
50c9f2 |
\include diagrams_b.h
|
|
Packit Service |
50c9f2 |
diagrams_c.h
|
|
Packit Service |
50c9f2 |
\include diagrams_c.h
|
|
Packit Service |
50c9f2 |
diagrams_d.h
|
|
Packit Service |
50c9f2 |
\include diagrams_d.h
|
|
Packit Service |
50c9f2 |
diagrams_e.h
|
|
Packit Service |
50c9f2 |
\include diagrams_e.h
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
\htmlonly
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
Click here
|
|
Packit Service |
50c9f2 |
for the corresponding HTML documentation that is generated by doxygen
|
|
Packit Service |
50c9f2 |
(EXTRACT_ALL = YES is used here).
|
|
Packit Service |
50c9f2 |
\endhtmlonly
|
|
Packit Service |
50c9f2 |
\latexonly
|
|
Packit Service |
50c9f2 |
\IfFileExists{../html/examples/diagrams/latex/refman_doc.tex}
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
See \hyperlink{diagrams_example}{Diagrams example}
|
|
Packit Service |
50c9f2 |
for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
|
|
Packit Service |
50c9f2 |
} {}
|
|
Packit Service |
50c9f2 |
\endlatexonly
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
\htmlonly
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
Go to the next section or return to the
|
|
Packit Service |
50c9f2 |
index.
|
|
Packit Service |
50c9f2 |
\endhtmlonly
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
*/
|
|
Packit Service |
50c9f2 |
|