<html>
<head>
<title>
log4cxx - Documentation
</title>
<link href="../css/doxygen.css" rel="stylesheet" type="text/css"/>
</head>

<body bgcolor="#ffffff" text="#000000" link="#525D76">        
<!-- START Header table --> 
<table border="0" cellspacing="0" width="90%">
<!-- TOP IMAGE -->
<tr>
<td colspan="2">
<a href="http://logging.apache.org">
<img src="http://logging.apache.org/images/ls-logo.jpg" align="left" border="0"/>
</a>
</td>

</tr>
</table>
<!-- END Header table --> 

           <!-- START main table --> 
            <table id="main" border="0" width="90%" cellspacing="2" cellpadding="0">
                <tr><td colspan="2">
                    <hr noshade="" size="1"/>
                </td></tr>
                
                <tr>
                    <!-- LEFT SIDE NAVIGATION -->
                    <td id="navbar" valign="top">
                      <!-- ============================================================ -->
  <table id="navbar" border="0" cellspacing="0" cellpadding="0">
                      <tr >
       	 <td class="navbarHeader" nowrap="true">
           <strong>Apache</strong>
         </td>
       </tr>
              	 <tr><td class="navbarItem"><small>    <a href="http://www.apache.org">Apache Home</a>
</small></td></tr>
              	 <tr><td class="navbarItem"><small>    <a href="http://logging.apache.org/">Logging Services</a>
</small></td></tr>
                                <tr >
       	 <td class="navbarHeader" nowrap="true">
           <strong>log4cxx project</strong>
         </td>
       </tr>
              	 <tr><td class="navbarItem"><small>    <a href="../index.html">About</a>
</small></td></tr>
              	 <tr><td class="navbarItem"><small>    <a href="../news.html">News</a>
</small></td></tr>
              	 <tr><td class="navbarItem"><small>    <a href="../team.html">Team</a>
</small></td></tr>
              	 <tr><td class="navbarItem"><small>    <a href="../manual/index.html">Documentation</a>
</small></td></tr>
              	 <tr><td class="navbarItem"><small>    <a href="../performance.html">Performance</a>
</small></td></tr>
              	 <tr><td class="navbarItem"><small>    <a href="../download.html">Download</a>
</small></td></tr>
             </table> 
   
                    </td>
                    <td id="mainContents" align="left" valign="top">
<hr>
<!-- Generated by Doxygen 1.3.5 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
<h1>Graph Legend</h1>This page explains how to interpret the graphs that are generated by doxygen.<p>
Consider the following example: <div class="fragment"><pre><span class="comment">/*! Invisible class because of truncation */</span>
<span class="keyword">class </span>Invisible { };
<span class="comment"></span>
<span class="comment">/*! Truncated class, inheritance relation is hidden */</span>
<span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };

<span class="comment">/* Class not documented with doxygen comments */</span>
<span class="keyword">class </span>Undocumented { };
<span class="comment"></span>
<span class="comment">/*! Class that is inherited using public inheritance */</span>
<span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };
<span class="comment"></span>
<span class="comment">/*! A template class */</span>
<span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };
<span class="comment"></span>
<span class="comment">/*! Class that is inherited using protected inheritance */</span>
<span class="keyword">class </span>ProtectedBase { };
<span class="comment"></span>
<span class="comment">/*! Class that is inherited using private inheritance */</span>
<span class="keyword">class </span>PrivateBase { };
<span class="comment"></span>
<span class="comment">/*! Class that is used by the Inherited class */</span>
<span class="keyword">class </span>Used { };
<span class="comment"></span>
<span class="comment">/*! Super class that inherits a number of other classes */</span>
<span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,
                  <span class="keyword">protected</span> ProtectedBase,
                  <span class="keyword">private</span> PrivateBase,
                  <span class="keyword">public</span> Undocumented
                  <span class="keyword">public</span> Templ&lt;int&gt;
{
  <span class="keyword">private</span>:
    Used *m_usedClass;
};
</pre></div>If the <code>MAX_DOT_GRAPH_HEIGHT</code> tag in the configuration file is set to 240 this will result in the following graph:<p>
<center><div align="center">
<img src="graph_legend.png" alt="graph_legend.png">
</div>
</center> <p>
The boxes in the above graph have the following meaning: <ul>
<li>
A filled black box represents the struct or class for which the graph is generated. </li>
<li>
A box with a black border denotes a documented struct or class. </li>
<li>
A box with a grey border denotes an undocumented struct or class. </li>
<li>
A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
</ul>
The arrows have the following meaning: <ul>
<li>
A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
<li>
A dark green arrow is used for protected inheritance. </li>
<li>
A dark red arrow is used for private inheritance. </li>
<li>
A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
<li>
A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
</ul>
                                                
                    </td>
                </tr>
             
                <!-- FOOTER -->
                <tr><td colspan="2">
                    <hr noshade="" size="1"/>
                </td></tr>
                <tr><td colspan="2">
                    <div align="center"><font color="#525D76" size="-1"><em>
                    Copyright &#169; 1999-2004, Apache Software Foundation
                    </em></font></div>
                </td></tr>
            </table>
           <!-- END main table --> 
        </body>
    </html>
<!-- end the processing -->
