chapter_8_section_1.html   [plain text]


<html>
    <head>
        <META NAME="Generator" CONTENT="Gutenberg">
		<META NAME="GeneratorVersion" CONTENT="v103.5
">
        <META http-equiv="content-type" CONTENT="text/html;charset=iso-8859-1">
        <META NAME = "Copyright" CONTENT="Copyright 2004 Apple Computer, Inc. All Rights Reserved.">
        <META NAME="IndexTitle" CONTENT="HeaderDoc Class Hierarchy">
        <TITLE>Tools: HeaderDoc User's Guide: HeaderDoc Class Hierarchy</TITLE>
        <base target="content">

        <LINK REL="stylesheet" TYPE="text/css" HREF="../Resources/CSS/frameset_styles.css">
        <style type="text/css"></style>
        <script language="JavaScript" src="../Resources/JavaScript/page.js"></script>
    </head>
    
    <BODY bgcolor="#ffffff" onload="initialize_page();"><a name="//apple_ref/doc/uid/TP40001215-CH349" title="HeaderDoc Class Hierarchy" turn_anchor="yes"></a>
        <a name="top"></a>
        <!-- start of header -->
        <!--#include virtual="/includes/framesetheader" -->
        <!-- end of header -->
        
        <!-- start of path -->
<div class="breadcrumb"><a href="http://developer.apple.com/" target="_top">ADC Home</a> &gt; <!--a logicalPath="//apple_ref/doc/uid/TP30000943"  -->Reference Library<!--/a--> &gt; <!--a logicalPath="//apple_ref/doc/uid/TP30000440"  -->Documentation<!--/a--> &gt; <!--a logicalPath="//apple_ref/doc/uid/TP30000436"  -->Tools<!--/a--> &gt; <!--a logicalPath="//apple_ref/doc/uid/TP30000436-TP30000502"  -->Darwin<!--/a--> &gt; <a logicalPath="//apple_ref/doc/uid/TP40001215-CH345" href="../intro/chapter_1_section_1.html#//apple_ref/doc/uid/TP40001215-CH345">HeaderDoc User's Guide</a> &gt; </div><br>
<!-- end of path -->
        
        <table width="100%" cellpadding=0 cellspacing=0 border=0 class="mini_nav_text"><tr>
        <td align=left scope="row">

        <!-- insert Show/Hide frames -->
        <script type="text/javascript" language="JavaScript"><!--
  
        if (self != top) {
            // loaded in frames
            document.write('<a href="'+self.location+'" target="_top"><img src="../Resources/Images/show_toc_icon.gif" width="15" height="14" border="0" style="margin-bottom: -2px;" alt=""></a> <a href="'+self.location+'" target="_top">Hide TOC</a>');
        }
        else {
            // not loaded frames
            document.write('<a href="../index.html?'+self.location+'" target="_top"><img src="../Resources/Images/show_toc_icon.gif" width="15" height="14" border="0" style="margin-bottom: -2px;" alt=""></a> <a href="../index.html?'+self.location+'" target="_top">Show TOC</a>');
        }
        //--></script>
        <!-- end Show/Hide frames -->

        </td><td align=right>
        
        <a href="../anchors/chapter_7_section_1.html" target="_self">&lt; Previous Page</a><span style="margin-left: 8px"><a href="../troubleshooting/chapter_9_section_1.html" target="_self">Next Page &gt;</a></span>
        
        </td>
        </tr></table>
        
        <hr>
        
        <a name="//apple_ref/doc/uid/TP40001215-CH349-CHDGBFAJ" turn_anchor="no"></a><a name="CHDGBFAJ" turn_anchor="no"></a><span class="page_title">HeaderDoc Class
Hierarchy</span><table><table cellpadding="8" width="100%" bgcolor="#F1F5F9" style="border: 1px solid #C9D1D7;"><tr><td scope="row"><table bgcolor="#F1F5F9" width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td><pre><code></code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code>HeaderElement (Root Class--any header entity that's significant)</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | (to HeaderDoc is a HeaderElement)</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |-----------APIOwner (Object that owns declared API)</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | |</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | |-------Header (Owner for header-wide API)</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | | </code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | |-------CPPClass (Container for all non-Objective-C classes and</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | |                    C pseudoclass/COM Interface APIs).</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | | </code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | |-------ObjCContainer</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |   |</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |   |-------ObjCClass (Owner for Objective-C class API)</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |   |</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |   |-------ObjCCategory (Owner for Objective-C category API)</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |   |</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |   |-------ObjCProtocol (Owner for Objective-C protocol API)</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |-----------Method (an Objective-C method)</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | </code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |-----------Constant</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | </code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |-----------Enum</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | </code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |-----------Function (any non-objective-C function or method)</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | </code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |-----------MinorAPIElement (parameter, members of structs)</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | </code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |-----------PDefine</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | </code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |-----------Struct (for both structs and unions)</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | | </code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | |-------Var (subclass of Struct so that it can contain fields) </code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> | </code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> |-----------Typedef</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> </code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code> </code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code>DocReference (Another root class. Used by gatherHeaderDoc to store</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code>             information about documentation framesets within an</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code>             input folder. The script uses this information to</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code>             construct a top-level table of contents with links</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code>             to each frameset.)</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code></code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code>ParseTree (Token tree instantiated from BlockParse.pm.)</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code></code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code>ParserState (Parser state instance instantiated from BlockParse.pm and stored</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code>            in certain tokens within a ParseTree instance.)</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code></code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code>IncludeHash (a simple data structure for storing information about a</code></pre></td><td><code><pre></pre></code></td></tr><tr><td scope="row"><pre><code>            #include directive.)</code></pre></td><td><code><pre></pre></code></td></tr></table></td></tr></table><br></table>
<p>In addition to the classes shown above, the <code>headerDoc2HTML</code> script
also uses the non&#8211;object-oriented modules <tt>Utilities.pm</tt>, <tt>ClassArray.pm</tt>,
and <tt>BlockParse.pm</tt>. Most
class instances are instantiated from <code>headerDoc2HTML.pl</code> based
on the results of a call to <code><!--a logicalPath="//apple_ref/doc/c_ref/blockParse"-->blockParse<!--/a--></code>.</p>
<p>The <code>ParseTree</code> class is instantiated
in the block parser itself. It contains a token tree and a set of
operations on that tree (print the tree, return a text or html representation
of the tree, walk the parse tree for parameters, walk the parse
tree for embedded headerdoc markup, and so on).</p>
<p>The <code>ParserState</code> class is also instantiated
in the block parser. It contains only three methods (<code>new</code>, <code>_initialize</code>,
and <code>print</code>), and is primarily just a giant
hash with some pre-defined values.</p>
<p>The <code>IncludeHash</code> class is essentially
just a simple data structure to handle basic information about #include
directives. It has two methods (<code>new</code> and <code>_initialize</code>).</p>
<p>The <code>gatherHeaderDoc</code> tool uses an external
program, <code>resolveLinks</code>, to convert special &#8220;link request&#8221;
comments into links to other files in the directory being processed.
This tool (written in C) resides in the <code>bin</code> directory
within the HeaderDoc modules directory.</p>
<p>HeaderDoc uses <code>xmllint</code> (from libxml)
to convert HTML into XHTML when generating XML output. HeaderDoc
also uses <code>hdxml2manxml</code> and <code>xml2man</code> from
the MPGL suite to generate man pages.</p>


        <br><br> 
        
        <table width="100%" cellpadding=0 cellspacing=0 border=0 class="mini_nav_text"><tr>
        <td align=left scope="row">

        <!-- insert Show/Hide frames -->
        <script type="text/javascript" language="JavaScript"><!--
           
        if (self != top) {
            // loaded in frames
            document.write('<a href="'+self.location+'" target="_top"><img src="../Resources/Images/show_toc_icon.gif" width="15" height="14" border="0" style="margin-bottom: -2px;" alt=""></a> <a href="'+self.location+'" target="_top">Hide TOC</a>');
        }
        else {
            // not loaded frames
            document.write('<a href="../index.html?'+self.location+'" target="_top"><img src="../Resources/Images/show_toc_icon.gif" width="15" height="14" border="0" style="margin-bottom: -2px;" alt=""></a> <a href="../index.html?'+self.location+'" target="_top">Show TOC</a>');
        }
        //--></script>
        <!-- end Show/Hide frames -->

        </td><td align=right>
        
        <a href="../anchors/chapter_7_section_1.html" target="_self">&lt; Previous Page</a><span style="margin-left: 8px"><a href="../troubleshooting/chapter_9_section_1.html" target="_self">Next Page &gt;</a></span>
        
        </td>
        </tr></table>

        <br><hr><div align="center"><p class="content_text"> <!--#if expr="0=1" -->&#169; 1999, 2004 Apple Computer, Inc. All Rights Reserved. &#40;<!--#endif -->Last updated: 2004-10-27<!--#if expr="0=1" -->&#041;<!--#endif --></p></div>

        
        <!-- start of footer -->
        <!--#include virtual="/includes/framesetfooter" -->
        <!-- end of footer -->
    </BODY>
</html>