Doxygen can use the "dot" tool from graphviz 1.5 to generate more advanced diagrams & graphs. Graphviz is an open-sourced, cross-platform graph drawing toolkit from AT&T and Lucent Bell Labs and can be found at http://www.research.att.com/sw/tools/graphviz/
If you have the "dot" tool available in the path, you can set HAVE_DOT to YES in the configuration file to let doxygen use it.
Doxygen uses the "dot" tool to generate the following graphs:
YES, a graphical representation of the class hierarchy will be drawn, along with the textual one. Currently this feature is supported for HTML only.\n Warning: When you have a very large class hierarchy where many classes derive from a common base class, the resulting image may become too big to handle for some browsers. YES, a graph will be generated for each documented class showing the direct and indirect inheritance relations. This disables the generation of the build-in class inheritance diagrams. YES, an include dependency graph is generated for each documented file that includes at least one other file. This feature is currently supported for HTML and RTF only. A has a member variable m_a of type class B, then A has an arrow to B with m_a as label). The elements in the class diagrams in HTML and RTF have the following meaning:
The elements in the class diagram in
have the following meaning:
The elements in the graphs generated by the dot tool have the following meaning:
A uses class B, if class A has a member variable m of type C, where B is a subtype of C (e.g. C could be B, B*, T<B>* ). Here are a couple of header files that together show the various diagrams that doxygen can generate:
diagrams_a.h
#ifndef _DIAGRAMS_A_H
#define _DIAGRAMS_A_H
class A { public: A *m_self; };
#endif
diagrams_b.h #ifndef _DIAGRAMS_B_H
#define _DIAGRAMS_B_H
class A;
class B { public: A *m_a; };
#endif
diagrams_c.h #ifndef _DIAGRAMS_C_H
#define _DIAGRAMS_C_H
#include "diagrams_c.h"
class D;
class C : public A { public: D *m_d; };
#endif
diagrams_d.h #ifndef _DIAGRAM_D_H
#define _DIAGRAM_D_H
#include "diagrams_a.h"
#include "diagrams_b.h"
class C;
class D : virtual protected A, private B { public: C m_c; };
#endif
diagrams_e.h #ifndef _DIAGRAM_E_H
#define _DIAGRAM_E_H
#include "diagrams_d.h"
class E : public D {};
#endif
Click here
for the corresponding HTML documentation that is generated by doxygen
(EXTRACT_ALL = YES is used here).
Go to the next section or return to the index.
1.2.1 written by Dimitri van Heesch,
© 1997-2000