Blame doc/diagrams.doc

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

            Packit 1c1d7e
            Click here
            Packit 1c1d7e
            for the corresponding HTML documentation that is generated by doxygen
            Packit 1c1d7e
            (EXTRACT_ALL = YES is used here).
            Packit 1c1d7e
            \endhtmlonly
            Packit 1c1d7e
            \latexonly
            Packit 1c1d7e
            \IfFileExists{../html/examples/diagrams/latex/refman_doc.tex}
            Packit 1c1d7e
            {
            Packit 1c1d7e
            See \hyperlink{diagrams_example}{Diagrams example}
            Packit 1c1d7e
            for the corresponding \mbox{\LaTeX} documentation that is generated by doxygen.
            Packit 1c1d7e
            } {}
            Packit 1c1d7e
            \endlatexonly
            Packit 1c1d7e
            Packit 1c1d7e
            \htmlonly
            Packit 1c1d7e


            Packit 1c1d7e
            Go to the next section or return to the
            Packit 1c1d7e
            index.
            Packit 1c1d7e
            \endhtmlonly
            Packit 1c1d7e
            Packit 1c1d7e
            */
            Packit 1c1d7e