Sophie

Sophie

distrib > Fedora > 13 > i386 > media > os > by-pkgid > 0b492435a0d81f9ba124dcde3e3b696a > files > 68

libtidy-devel-0.99.0-20.20091203.fc13.i686.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>HTML Tidy: tidy.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<h1>tidy.h</h1><a href="tidy_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef __TIDY_H__</span>
<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define __TIDY_H__</span>
<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00004"></a>00004 <span class="comment">/** @file tidy.h - Defines HTML Tidy API implemented by tidy library.</span>
<a name="l00005"></a>00005 <span class="comment"></span>
<a name="l00006"></a>00006 <span class="comment">  Public interface is const-correct and doesn&apos;t explicitly depend</span>
<a name="l00007"></a>00007 <span class="comment">  on any globals.  Thus, thread-safety may be introduced w/out</span>
<a name="l00008"></a>00008 <span class="comment">  changing the interface.</span>
<a name="l00009"></a>00009 <span class="comment"></span>
<a name="l00010"></a>00010 <span class="comment">  Looking ahead to a C++ wrapper, C functions always pass </span>
<a name="l00011"></a>00011 <span class="comment">  this-equivalent as 1st arg.</span>
<a name="l00012"></a>00012 <span class="comment"></span>
<a name="l00013"></a>00013 <span class="comment"></span>
<a name="l00014"></a>00014 <span class="comment">  Copyright (c) 1998-2008 World Wide Web Consortium</span>
<a name="l00015"></a>00015 <span class="comment">  (Massachusetts Institute of Technology, European Research </span>
<a name="l00016"></a>00016 <span class="comment">  Consortium for Informatics and Mathematics, Keio University).</span>
<a name="l00017"></a>00017 <span class="comment">  All Rights Reserved.</span>
<a name="l00018"></a>00018 <span class="comment"></span>
<a name="l00019"></a>00019 <span class="comment">  CVS Info :</span>
<a name="l00020"></a>00020 <span class="comment"></span>
<a name="l00021"></a>00021 <span class="comment">    $Author: arnaud02 $ </span>
<a name="l00022"></a>00022 <span class="comment">    $Date: 2008/04/22 11:00:42 $ </span>
<a name="l00023"></a>00023 <span class="comment">    $Revision: 1.22 $ </span>
<a name="l00024"></a>00024 <span class="comment"></span>
<a name="l00025"></a>00025 <span class="comment">  Contributing Author(s):</span>
<a name="l00026"></a>00026 <span class="comment"></span>
<a name="l00027"></a>00027 <span class="comment">     Dave Raggett &lt;dsr@w3.org&gt;</span>
<a name="l00028"></a>00028 <span class="comment"></span>
<a name="l00029"></a>00029 <span class="comment">  The contributing author(s) would like to thank all those who</span>
<a name="l00030"></a>00030 <span class="comment">  helped with testing, bug fixes and suggestions for improvements. </span>
<a name="l00031"></a>00031 <span class="comment">  This wouldn&apos;t have been possible without your help.</span>
<a name="l00032"></a>00032 <span class="comment"></span>
<a name="l00033"></a>00033 <span class="comment">  COPYRIGHT NOTICE:</span>
<a name="l00034"></a>00034 <span class="comment"> </span>
<a name="l00035"></a>00035 <span class="comment">  This software and documentation is provided &quot;as is,&quot; and</span>
<a name="l00036"></a>00036 <span class="comment">  the copyright holders and contributing author(s) make no</span>
<a name="l00037"></a>00037 <span class="comment">  representations or warranties, express or implied, including</span>
<a name="l00038"></a>00038 <span class="comment">  but not limited to, warranties of merchantability or fitness</span>
<a name="l00039"></a>00039 <span class="comment">  for any particular purpose or that the use of the software or</span>
<a name="l00040"></a>00040 <span class="comment">  documentation will not infringe any third party patents,</span>
<a name="l00041"></a>00041 <span class="comment">  copyrights, trademarks or other rights. </span>
<a name="l00042"></a>00042 <span class="comment"></span>
<a name="l00043"></a>00043 <span class="comment">  The copyright holders and contributing author(s) will not be held</span>
<a name="l00044"></a>00044 <span class="comment">  liable for any direct, indirect, special or consequential damages</span>
<a name="l00045"></a>00045 <span class="comment">  arising out of any use of the software or documentation, even if</span>
<a name="l00046"></a>00046 <span class="comment">  advised of the possibility of such damage.</span>
<a name="l00047"></a>00047 <span class="comment"></span>
<a name="l00048"></a>00048 <span class="comment">  Permission is hereby granted to use, copy, modify, and distribute</span>
<a name="l00049"></a>00049 <span class="comment">  this source code, or portions hereof, documentation and executables,</span>
<a name="l00050"></a>00050 <span class="comment">  for any purpose, without fee, subject to the following restrictions:</span>
<a name="l00051"></a>00051 <span class="comment"></span>
<a name="l00052"></a>00052 <span class="comment">  1. The origin of this source code must not be misrepresented.</span>
<a name="l00053"></a>00053 <span class="comment">  2. Altered versions must be plainly marked as such and must</span>
<a name="l00054"></a>00054 <span class="comment">     not be misrepresented as being the original source.</span>
<a name="l00055"></a>00055 <span class="comment">  3. This Copyright notice may not be removed or altered from any</span>
<a name="l00056"></a>00056 <span class="comment">     source or altered source distribution.</span>
<a name="l00057"></a>00057 <span class="comment"> </span>
<a name="l00058"></a>00058 <span class="comment">  The copyright holders and contributing author(s) specifically</span>
<a name="l00059"></a>00059 <span class="comment">  permit, without fee, and encourage the use of this source code</span>
<a name="l00060"></a>00060 <span class="comment">  as a component for supporting the Hypertext Markup Language in</span>
<a name="l00061"></a>00061 <span class="comment">  commercial products. If you use this source code in a product,</span>
<a name="l00062"></a>00062 <span class="comment">  acknowledgment is not required but would be appreciated.</span>
<a name="l00063"></a>00063 <span class="comment"></span>
<a name="l00064"></a>00064 <span class="comment"></span>
<a name="l00065"></a>00065 <span class="comment">  Created 2001-05-20 by Charles Reitzel</span>
<a name="l00066"></a>00066 <span class="comment">  Updated 2002-07-01 by Charles Reitzel - 1st Implementation</span>
<a name="l00067"></a>00067 <span class="comment"></span>
<a name="l00068"></a>00068 <span class="comment">*/</span>
<a name="l00069"></a>00069 
<a name="l00070"></a>00070 <span class="preprocessor">#include &quot;platform.h&quot;</span>
<a name="l00071"></a>00071 <span class="preprocessor">#include &quot;tidyenum.h&quot;</span>
<a name="l00072"></a>00072 
<a name="l00073"></a>00073 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00074"></a>00074 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {
<a name="l00075"></a>00075 <span class="preprocessor">#endif</span>
<a name="l00076"></a>00076 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00077"></a>00077 <span class="comment">/** @defgroup Opaque Opaque Types</span>
<a name="l00078"></a>00078 <span class="comment">**</span>
<a name="l00079"></a>00079 <span class="comment">** Cast to implementation types within lib.</span>
<a name="l00080"></a>00080 <span class="comment">** Reduces inter-dependencies/conflicts w/ application code.</span>
<a name="l00081"></a>00081 <span class="comment">** @{</span>
<a name="l00082"></a>00082 <span class="comment">*/</span>
<a name="l00083"></a>00083 <span class="comment"></span>
<a name="l00084"></a>00084 <span class="comment">/** @struct TidyDoc</span>
<a name="l00085"></a>00085 <span class="comment">**  Opaque document datatype</span>
<a name="l00086"></a>00086 <span class="comment">*/</span>
<a name="l00087"></a>00087 opaque_type( <a class="code" href="structTidyDoc.html">TidyDoc</a> );
<a name="l00088"></a>00088 <span class="comment"></span>
<a name="l00089"></a>00089 <span class="comment">/** @struct TidyOption</span>
<a name="l00090"></a>00090 <span class="comment">**  Opaque option datatype</span>
<a name="l00091"></a>00091 <span class="comment">*/</span>
<a name="l00092"></a>00092 opaque_type( <a class="code" href="structTidyOption.html">TidyOption</a> );
<a name="l00093"></a>00093 <span class="comment"></span>
<a name="l00094"></a>00094 <span class="comment">/** @struct TidyNode</span>
<a name="l00095"></a>00095 <span class="comment">**  Opaque node datatype</span>
<a name="l00096"></a>00096 <span class="comment">*/</span>
<a name="l00097"></a>00097 opaque_type( <a class="code" href="structTidyNode.html">TidyNode</a> );
<a name="l00098"></a>00098 <span class="comment"></span>
<a name="l00099"></a>00099 <span class="comment">/** @struct TidyAttr</span>
<a name="l00100"></a>00100 <span class="comment">**  Opaque attribute datatype</span>
<a name="l00101"></a>00101 <span class="comment">*/</span>
<a name="l00102"></a>00102 opaque_type( <a class="code" href="structTidyAttr.html">TidyAttr</a> );
<a name="l00103"></a>00103 <span class="comment"></span>
<a name="l00104"></a>00104 <span class="comment">/** @} end Opaque group */</span>
<a name="l00105"></a>00105 
<a name="l00106"></a>00106 TIDY_STRUCT <span class="keyword">struct </span><a class="code" href="struct__TidyBuffer.html">_TidyBuffer</a>;
<a name="l00107"></a>00107 <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__TidyBuffer.html">_TidyBuffer</a> <a class="code" href="struct__TidyBuffer.html">TidyBuffer</a>;
<a name="l00108"></a>00108 
<a name="l00109"></a>00109 <span class="comment"></span>
<a name="l00110"></a>00110 <span class="comment">/** @defgroup Memory  Memory Allocation</span>
<a name="l00111"></a>00111 <span class="comment">**</span>
<a name="l00112"></a>00112 <span class="comment">** Tidy uses a user provided allocator for all</span>
<a name="l00113"></a>00113 <span class="comment">** memory allocations.  If this allocator is</span>
<a name="l00114"></a>00114 <span class="comment">** not provided, then a default allocator is</span>
<a name="l00115"></a>00115 <span class="comment">** used which simply wraps standard C malloc/free</span>
<a name="l00116"></a>00116 <span class="comment">** calls.  These wrappers call the panic function</span>
<a name="l00117"></a>00117 <span class="comment">** upon any failure.  The default panic function</span>
<a name="l00118"></a>00118 <span class="comment">** prints an out of memory message to stderr, and</span>
<a name="l00119"></a>00119 <span class="comment">** calls exit(2).</span>
<a name="l00120"></a>00120 <span class="comment">**</span>
<a name="l00121"></a>00121 <span class="comment">** For applications in which it is unacceptable to</span>
<a name="l00122"></a>00122 <span class="comment">** abort in the case of memory allocation, then the</span>
<a name="l00123"></a>00123 <span class="comment">** panic function can be replaced with one which</span>
<a name="l00124"></a>00124 <span class="comment">** longjmps() out of the tidy code.  For this to</span>
<a name="l00125"></a>00125 <span class="comment">** clean up completely, you should be careful not</span>
<a name="l00126"></a>00126 <span class="comment">** to use any tidy methods that open files as these</span>
<a name="l00127"></a>00127 <span class="comment">** will not be closed before panic() is called.</span>
<a name="l00128"></a>00128 <span class="comment">**</span>
<a name="l00129"></a>00129 <span class="comment">** TODO: associate file handles with tidyDoc and</span>
<a name="l00130"></a>00130 <span class="comment">** ensure that tidyDocRelease() can close them all.</span>
<a name="l00131"></a>00131 <span class="comment">**</span>
<a name="l00132"></a>00132 <span class="comment">** Calling the withAllocator() family (</span>
<a name="l00133"></a>00133 <span class="comment">** tidyCreateWithAllocator, tidyBufInitWithAllocator,</span>
<a name="l00134"></a>00134 <span class="comment">** tidyBufAllocWithAllocator) allow settings custom</span>
<a name="l00135"></a>00135 <span class="comment">** allocators).</span>
<a name="l00136"></a>00136 <span class="comment">**</span>
<a name="l00137"></a>00137 <span class="comment">** All parts of the document use the same allocator.</span>
<a name="l00138"></a>00138 <span class="comment">** Calls that require a user provided buffer can</span>
<a name="l00139"></a>00139 <span class="comment">** optionally use a different allocator.</span>
<a name="l00140"></a>00140 <span class="comment">**</span>
<a name="l00141"></a>00141 <span class="comment">** For reference in designing a plug-in allocator,</span>
<a name="l00142"></a>00142 <span class="comment">** most allocations made by tidy are less than 100</span>
<a name="l00143"></a>00143 <span class="comment">** bytes, corresponding to attribute names/values, etc.</span>
<a name="l00144"></a>00144 <span class="comment">**</span>
<a name="l00145"></a>00145 <span class="comment">** There is also an additional class of much larger</span>
<a name="l00146"></a>00146 <span class="comment">** allocations which are where most of the data from</span>
<a name="l00147"></a>00147 <span class="comment">** the lexer is stored.  (It is not currently possible</span>
<a name="l00148"></a>00148 <span class="comment">** to use a separate allocator for the lexer, this</span>
<a name="l00149"></a>00149 <span class="comment">** would be a useful extension).</span>
<a name="l00150"></a>00150 <span class="comment">**</span>
<a name="l00151"></a>00151 <span class="comment">** In general, approximately 1/3rd of the memory</span>
<a name="l00152"></a>00152 <span class="comment">** used by tidy is freed during the parse, so if</span>
<a name="l00153"></a>00153 <span class="comment">** memory usage is an issue then an allocator that </span>
<a name="l00154"></a>00154 <span class="comment">** can reuse this memory is a good idea.</span>
<a name="l00155"></a>00155 <span class="comment">**</span>
<a name="l00156"></a>00156 <span class="comment">** @{</span>
<a name="l00157"></a>00157 <span class="comment">*/</span>
<a name="l00158"></a>00158 <span class="comment"></span>
<a name="l00159"></a>00159 <span class="comment">/** Prototype for the allocator&apos;s function table */</span>
<a name="l00160"></a>00160 <span class="keyword">struct </span><a class="code" href="struct__TidyAllocatorVtbl.html">_TidyAllocatorVtbl</a>;<span class="comment"></span>
<a name="l00161"></a>00161 <span class="comment">/** The allocators function table */</span>
<a name="l00162"></a><a class="code" href="group__Memory.html#ga3fe8c5ac7d658618c732565776940ed8">00162</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__TidyAllocatorVtbl.html">_TidyAllocatorVtbl</a> <a class="code" href="struct__TidyAllocatorVtbl.html">TidyAllocatorVtbl</a>;
<a name="l00163"></a>00163 <span class="comment"></span>
<a name="l00164"></a>00164 <span class="comment">/** Prototype for the allocator */</span>
<a name="l00165"></a>00165 <span class="keyword">struct </span><a class="code" href="struct__TidyAllocator.html">_TidyAllocator</a>;<span class="comment"></span>
<a name="l00166"></a>00166 <span class="comment">/** The allocator **/</span>
<a name="l00167"></a><a class="code" href="group__Memory.html#ga78e96524a88db0c09e766795265863da">00167</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__TidyAllocator.html">_TidyAllocator</a> <a class="code" href="struct__TidyAllocator.html">TidyAllocator</a>;
<a name="l00168"></a>00168 <span class="comment"></span>
<a name="l00169"></a>00169 <span class="comment">/** An allocator&apos;s function table.  All functions here must</span>
<a name="l00170"></a>00170 <span class="comment">    be provided.</span>
<a name="l00171"></a>00171 <span class="comment"> */</span>
<a name="l00172"></a><a class="code" href="struct__TidyAllocatorVtbl.html">00172</a> <span class="keyword">struct </span><a class="code" href="struct__TidyAllocatorVtbl.html">_TidyAllocatorVtbl</a> {<span class="comment"></span>
<a name="l00173"></a>00173 <span class="comment">    /** Called to allocate a block of nBytes of memory */</span>
<a name="l00174"></a>00174     <span class="keywordtype">void</span>* (TIDY_CALL *<a class="code" href="struct__TidyAllocatorVtbl.html#ac89bb7f5b58fcb5b31a1560705f3b817">alloc</a>)( <a class="code" href="struct__TidyAllocator.html">TidyAllocator</a> *<span class="keyword">self</span>, <span class="keywordtype">size_t</span> nBytes );<span class="comment"></span>
<a name="l00175"></a>00175 <span class="comment">    /** Called to resize (grow, in general) a block of memory.</span>
<a name="l00176"></a>00176 <span class="comment">        Must support being called with NULL.</span>
<a name="l00177"></a>00177 <span class="comment">    */</span>
<a name="l00178"></a>00178     <span class="keywordtype">void</span>* (TIDY_CALL *<a class="code" href="struct__TidyAllocatorVtbl.html#a0cad0dd2aa75a20573fc46f25460a5cc">realloc</a>)( <a class="code" href="struct__TidyAllocator.html">TidyAllocator</a> *<span class="keyword">self</span>, <span class="keywordtype">void</span> *block, <span class="keywordtype">size_t</span> nBytes );<span class="comment"></span>
<a name="l00179"></a>00179 <span class="comment">    /** Called to free a previously allocated block of memory */</span>
<a name="l00180"></a>00180     <a class="code" href="struct__TidyAllocatorVtbl.html#a1e453d5e80b35fe3c6c15512c6b95aa5">void</a> (TIDY_CALL *free)( <a class="code" href="struct__TidyAllocator.html">TidyAllocator</a> *<span class="keyword">self</span>, <span class="keywordtype">void</span> *block);<span class="comment"></span>
<a name="l00181"></a>00181 <span class="comment">    /** Called when a panic condition is detected.  Must support</span>
<a name="l00182"></a>00182 <span class="comment">        block == NULL.  This function is not called if either alloc </span>
<a name="l00183"></a>00183 <span class="comment">        or realloc fails; it is up to the allocator to do this.</span>
<a name="l00184"></a>00184 <span class="comment">        Currently this function can only be called if an error is</span>
<a name="l00185"></a>00185 <span class="comment">        detected in the tree integrity via the internal function</span>
<a name="l00186"></a>00186 <span class="comment">        CheckNodeIntegrity().  This is a situation that can</span>
<a name="l00187"></a>00187 <span class="comment">        only arise in the case of a programming error in tidylib.</span>
<a name="l00188"></a>00188 <span class="comment">        You can turn off node integrity checking by defining</span>
<a name="l00189"></a>00189 <span class="comment">        the constant NO_NODE_INTEGRITY_CHECK during the build.</span>
<a name="l00190"></a>00190 <span class="comment">    **/</span>
<a name="l00191"></a>00191     <a class="code" href="struct__TidyAllocatorVtbl.html#a1e453d5e80b35fe3c6c15512c6b95aa5">void</a> (TIDY_CALL *panic)( <a class="code" href="struct__TidyAllocator.html">TidyAllocator</a> *<span class="keyword">self</span>, ctmbstr msg );
<a name="l00192"></a>00192 };
<a name="l00193"></a>00193 <span class="comment"></span>
<a name="l00194"></a>00194 <span class="comment">/** An allocator.  To create your own allocator, do something like</span>
<a name="l00195"></a>00195 <span class="comment">    the following:</span>
<a name="l00196"></a>00196 <span class="comment">    </span>
<a name="l00197"></a>00197 <span class="comment">    typedef struct _MyAllocator {</span>
<a name="l00198"></a>00198 <span class="comment">       TidyAllocator base;</span>
<a name="l00199"></a>00199 <span class="comment">       ...other custom allocator state...</span>
<a name="l00200"></a>00200 <span class="comment">    } MyAllocator;</span>
<a name="l00201"></a>00201 <span class="comment">    </span>
<a name="l00202"></a>00202 <span class="comment">    void* MyAllocator_alloc(TidyAllocator *base, void *block, size_t nBytes)</span>
<a name="l00203"></a>00203 <span class="comment">    {</span>
<a name="l00204"></a>00204 <span class="comment">        MyAllocator *self = (MyAllocator*)base;</span>
<a name="l00205"></a>00205 <span class="comment">        ...</span>
<a name="l00206"></a>00206 <span class="comment">    }</span>
<a name="l00207"></a>00207 <span class="comment">    (etc)</span>
<a name="l00208"></a>00208 <span class="comment"></span>
<a name="l00209"></a>00209 <span class="comment">    static const TidyAllocatorVtbl MyAllocatorVtbl = {</span>
<a name="l00210"></a>00210 <span class="comment">        MyAllocator_alloc,</span>
<a name="l00211"></a>00211 <span class="comment">        MyAllocator_realloc,</span>
<a name="l00212"></a>00212 <span class="comment">        MyAllocator_free,</span>
<a name="l00213"></a>00213 <span class="comment">        MyAllocator_panic</span>
<a name="l00214"></a>00214 <span class="comment">    };</span>
<a name="l00215"></a>00215 <span class="comment"></span>
<a name="l00216"></a>00216 <span class="comment">    myAllocator allocator;</span>
<a name="l00217"></a>00217 <span class="comment">    TidyDoc doc;</span>
<a name="l00218"></a>00218 <span class="comment"></span>
<a name="l00219"></a>00219 <span class="comment">    allocator.base.vtbl = &amp;amp;MyAllocatorVtbl;</span>
<a name="l00220"></a>00220 <span class="comment">    ...initialise allocator specific state...</span>
<a name="l00221"></a>00221 <span class="comment">    doc = tidyCreateWithAllocator(&amp;allocator);</span>
<a name="l00222"></a>00222 <span class="comment">    ...</span>
<a name="l00223"></a>00223 <span class="comment"></span>
<a name="l00224"></a>00224 <span class="comment">    Although this looks slightly long winded, the advantage is that to create</span>
<a name="l00225"></a>00225 <span class="comment">    a custom allocator you simply need to set the vtbl pointer correctly.</span>
<a name="l00226"></a>00226 <span class="comment">    The vtbl itself can reside in static/global data, and hence does not</span>
<a name="l00227"></a>00227 <span class="comment">    need to be initialised each time an allocator is created, and furthermore</span>
<a name="l00228"></a>00228 <span class="comment">    the memory is shared amongst all created allocators.</span>
<a name="l00229"></a>00229 <span class="comment">*/</span>
<a name="l00230"></a><a class="code" href="struct__TidyAllocator.html">00230</a> <span class="keyword">struct </span><a class="code" href="struct__TidyAllocator.html">_TidyAllocator</a> {
<a name="l00231"></a>00231     <span class="keyword">const</span> <a class="code" href="struct__TidyAllocatorVtbl.html">TidyAllocatorVtbl</a> *vtbl;
<a name="l00232"></a>00232 };
<a name="l00233"></a>00233 <span class="comment"></span>
<a name="l00234"></a>00234 <span class="comment">/** Callback for &quot;malloc&quot; replacement */</span>
<a name="l00235"></a><a class="code" href="group__Memory.html#ga3bd3cc4d0c837a4cd10ab472ba671430">00235</a> <span class="keyword">typedef</span> <span class="keywordtype">void</span>* (TIDY_CALL *<a class="code" href="group__Memory.html#ga3bd3cc4d0c837a4cd10ab472ba671430">TidyMalloc</a>)( <span class="keywordtype">size_t</span> len );<span class="comment"></span>
<a name="l00236"></a>00236 <span class="comment">/** Callback for &quot;realloc&quot; replacement */</span>
<a name="l00237"></a><a class="code" href="group__Memory.html#ga9d9a5625817932dbbb39dd33de678edd">00237</a> <span class="keyword">typedef</span> <span class="keywordtype">void</span>* (TIDY_CALL *<a class="code" href="group__Memory.html#ga9d9a5625817932dbbb39dd33de678edd">TidyRealloc</a>)( <span class="keywordtype">void</span>* buf, <span class="keywordtype">size_t</span> len );<span class="comment"></span>
<a name="l00238"></a>00238 <span class="comment">/** Callback for &quot;free&quot; replacement */</span>
<a name="l00239"></a><a class="code" href="group__Memory.html#ga27931c443e424937ba47f0d4795aa35f">00239</a> <span class="keyword">typedef</span> void  (TIDY_CALL *<a class="code" href="group__Memory.html#ga27931c443e424937ba47f0d4795aa35f">TidyFree</a>)( <span class="keywordtype">void</span>* buf );<span class="comment"></span>
<a name="l00240"></a>00240 <span class="comment">/** Callback for &quot;out of memory&quot; panic state */</span>
<a name="l00241"></a><a class="code" href="group__Memory.html#ga0770be41d9935a3e2933ba0be3c7725c">00241</a> <span class="keyword">typedef</span> void  (TIDY_CALL *<a class="code" href="group__Memory.html#ga0770be41d9935a3e2933ba0be3c7725c">TidyPanic</a>)( ctmbstr mssg );
<a name="l00242"></a>00242 
<a name="l00243"></a>00243 <span class="comment"></span>
<a name="l00244"></a>00244 <span class="comment">/** Give Tidy a malloc() replacement */</span>
<a name="l00245"></a>00245 TIDY_EXPORT Bool TIDY_CALL <a class="code" href="group__Memory.html#gab55079374527525e3374ebc4d2a1e625">tidySetMallocCall</a>( <a class="code" href="group__Memory.html#ga3bd3cc4d0c837a4cd10ab472ba671430">TidyMalloc</a> fmalloc );<span class="comment"></span>
<a name="l00246"></a>00246 <span class="comment">/** Give Tidy a realloc() replacement */</span>
<a name="l00247"></a>00247 TIDY_EXPORT Bool TIDY_CALL <a class="code" href="group__Memory.html#ga446b538da3ee3f2e5a3827b877665b30">tidySetReallocCall</a>( <a class="code" href="group__Memory.html#ga9d9a5625817932dbbb39dd33de678edd">TidyRealloc</a> frealloc );<span class="comment"></span>
<a name="l00248"></a>00248 <span class="comment">/** Give Tidy a free() replacement */</span>
<a name="l00249"></a>00249 TIDY_EXPORT Bool TIDY_CALL <a class="code" href="group__Memory.html#ga70e707b7df86effb5727b0b9ff64eed7">tidySetFreeCall</a>( <a class="code" href="group__Memory.html#ga27931c443e424937ba47f0d4795aa35f">TidyFree</a> ffree );<span class="comment"></span>
<a name="l00250"></a>00250 <span class="comment">/** Give Tidy an &quot;out of memory&quot; handler */</span>
<a name="l00251"></a>00251 TIDY_EXPORT Bool TIDY_CALL <a class="code" href="group__Memory.html#gab12cc0435bacec1a8c725e02357acc00">tidySetPanicCall</a>( <a class="code" href="group__Memory.html#ga0770be41d9935a3e2933ba0be3c7725c">TidyPanic</a> fpanic );
<a name="l00252"></a>00252 <span class="comment"></span>
<a name="l00253"></a>00253 <span class="comment">/** @} end Memory group */</span>
<a name="l00254"></a>00254 <span class="comment"></span>
<a name="l00255"></a>00255 <span class="comment">/** @defgroup Basic Basic Operations</span>
<a name="l00256"></a>00256 <span class="comment">**</span>
<a name="l00257"></a>00257 <span class="comment">** Tidy public interface</span>
<a name="l00258"></a>00258 <span class="comment">**</span>
<a name="l00259"></a>00259 <span class="comment">** Several functions return an integer document status:</span>
<a name="l00260"></a>00260 <span class="comment">**</span>
<a name="l00261"></a>00261 <span class="comment">** &lt;pre&gt;</span>
<a name="l00262"></a>00262 <span class="comment">** 0    -&gt; SUCCESS</span>
<a name="l00263"></a>00263 <span class="comment">** &gt;0   -&gt; 1 == TIDY WARNING, 2 == TIDY ERROR</span>
<a name="l00264"></a>00264 <span class="comment">** &lt;0   -&gt; SEVERE ERROR</span>
<a name="l00265"></a>00265 <span class="comment">** &lt;/pre&gt;</span>
<a name="l00266"></a>00266 <span class="comment">** </span>
<a name="l00267"></a>00267 <span class="comment">The following is a short example program.</span>
<a name="l00268"></a>00268 <span class="comment"></span>
<a name="l00269"></a>00269 <span class="comment">&lt;pre&gt;</span>
<a name="l00270"></a>00270 <span class="comment">#include &amp;lt;tidy.h&amp;gt;</span>
<a name="l00271"></a>00271 <span class="comment">#include &amp;lt;buffio.h&amp;gt;</span>
<a name="l00272"></a>00272 <span class="comment">#include &amp;lt;stdio.h&amp;gt;</span>
<a name="l00273"></a>00273 <span class="comment">#include &amp;lt;errno.h&amp;gt;</span>
<a name="l00274"></a>00274 <span class="comment"></span>
<a name="l00275"></a>00275 <span class="comment"></span>
<a name="l00276"></a>00276 <span class="comment">int main(int argc, char **argv )</span>
<a name="l00277"></a>00277 <span class="comment">{</span>
<a name="l00278"></a>00278 <span class="comment">  const char* input = &quot;&amp;lt;title&amp;gt;Foo&amp;lt;/title&amp;gt;&amp;lt;p&amp;gt;Foo!&quot;;</span>
<a name="l00279"></a>00279 <span class="comment">  TidyBuffer output;</span>
<a name="l00280"></a>00280 <span class="comment">  TidyBuffer errbuf;</span>
<a name="l00281"></a>00281 <span class="comment">  int rc = -1;</span>
<a name="l00282"></a>00282 <span class="comment">  Bool ok;</span>
<a name="l00283"></a>00283 <span class="comment"></span>
<a name="l00284"></a>00284 <span class="comment">  TidyDoc tdoc = tidyCreate();                     // Initialize &quot;document&quot;</span>
<a name="l00285"></a>00285 <span class="comment">  tidyBufInit( &amp;amp;output );</span>
<a name="l00286"></a>00286 <span class="comment">  tidyBufInit( &amp;amp;errbuf );</span>
<a name="l00287"></a>00287 <span class="comment">  printf( &quot;Tidying:\t\%s\\n&quot;, input );</span>
<a name="l00288"></a>00288 <span class="comment"></span>
<a name="l00289"></a>00289 <span class="comment">  ok = tidyOptSetBool( tdoc, TidyXhtmlOut, yes );  // Convert to XHTML</span>
<a name="l00290"></a>00290 <span class="comment">  if ( ok )</span>
<a name="l00291"></a>00291 <span class="comment">    rc = tidySetErrorBuffer( tdoc, &amp;amp;errbuf );      // Capture diagnostics</span>
<a name="l00292"></a>00292 <span class="comment">  if ( rc &amp;gt;= 0 )</span>
<a name="l00293"></a>00293 <span class="comment">    rc = tidyParseString( tdoc, input );           // Parse the input</span>
<a name="l00294"></a>00294 <span class="comment">  if ( rc &amp;gt;= 0 )</span>
<a name="l00295"></a>00295 <span class="comment">    rc = tidyCleanAndRepair( tdoc );               // Tidy it up!</span>
<a name="l00296"></a>00296 <span class="comment">  if ( rc &amp;gt;= 0 )</span>
<a name="l00297"></a>00297 <span class="comment">    rc = tidyRunDiagnostics( tdoc );               // Kvetch</span>
<a name="l00298"></a>00298 <span class="comment">  if ( rc &amp;gt; 1 )                                    // If error, force output.</span>
<a name="l00299"></a>00299 <span class="comment">    rc = ( tidyOptSetBool(tdoc, TidyForceOutput, yes) ? rc : -1 );</span>
<a name="l00300"></a>00300 <span class="comment">  if ( rc &amp;gt;= 0 )</span>
<a name="l00301"></a>00301 <span class="comment">    rc = tidySaveBuffer( tdoc, &amp;amp;output );          // Pretty Print</span>
<a name="l00302"></a>00302 <span class="comment"></span>
<a name="l00303"></a>00303 <span class="comment">  if ( rc &amp;gt;= 0 )</span>
<a name="l00304"></a>00304 <span class="comment">  {</span>
<a name="l00305"></a>00305 <span class="comment">    if ( rc &amp;gt; 0 )</span>
<a name="l00306"></a>00306 <span class="comment">      printf( &quot;\\nDiagnostics:\\n\\n\%s&quot;, errbuf.bp );</span>
<a name="l00307"></a>00307 <span class="comment">    printf( &quot;\\nAnd here is the result:\\n\\n\%s&quot;, output.bp );</span>
<a name="l00308"></a>00308 <span class="comment">  }</span>
<a name="l00309"></a>00309 <span class="comment">  else</span>
<a name="l00310"></a>00310 <span class="comment">    printf( &quot;A severe error (\%d) occurred.\\n&quot;, rc );</span>
<a name="l00311"></a>00311 <span class="comment"></span>
<a name="l00312"></a>00312 <span class="comment">  tidyBufFree( &amp;amp;output );</span>
<a name="l00313"></a>00313 <span class="comment">  tidyBufFree( &amp;amp;errbuf );</span>
<a name="l00314"></a>00314 <span class="comment">  tidyRelease( tdoc );</span>
<a name="l00315"></a>00315 <span class="comment">  return rc;</span>
<a name="l00316"></a>00316 <span class="comment">}</span>
<a name="l00317"></a>00317 <span class="comment">&lt;/pre&gt;</span>
<a name="l00318"></a>00318 <span class="comment">** @{</span>
<a name="l00319"></a>00319 <span class="comment">*/</span>
<a name="l00320"></a>00320 
<a name="l00321"></a>00321 TIDY_EXPORT <a class="code" href="structTidyDoc.html">TidyDoc</a> TIDY_CALL     tidyCreate(<span class="keywordtype">void</span>);
<a name="l00322"></a>00322 TIDY_EXPORT <a class="code" href="structTidyDoc.html">TidyDoc</a> TIDY_CALL     tidyCreateWithAllocator( <a class="code" href="struct__TidyAllocator.html">TidyAllocator</a> *allocator );
<a name="l00323"></a>00323 TIDY_EXPORT <span class="keywordtype">void</span> TIDY_CALL        tidyRelease( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00324"></a>00324 <span class="comment"></span>
<a name="l00325"></a>00325 <span class="comment">/** Let application store a chunk of data w/ each Tidy instance.</span>
<a name="l00326"></a>00326 <span class="comment">**  Useful for callbacks.</span>
<a name="l00327"></a>00327 <span class="comment">*/</span>
<a name="l00328"></a>00328 TIDY_EXPORT <span class="keywordtype">void</span> TIDY_CALL        <a class="code" href="group__Basic.html#gaa1a9f78be3542868ac10481e2efa8708">tidySetAppData</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, <span class="keywordtype">void</span>* appData );
<a name="l00329"></a>00329 <span class="comment"></span>
<a name="l00330"></a>00330 <span class="comment">/** Get application data set previously */</span>
<a name="l00331"></a>00331 TIDY_EXPORT <span class="keywordtype">void</span>* TIDY_CALL       <a class="code" href="group__Basic.html#ga1319c9757d4f8c596615e0fdcfcf2504">tidyGetAppData</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00332"></a>00332 <span class="comment"></span>
<a name="l00333"></a>00333 <span class="comment">/** Get release date (version) for current library */</span>
<a name="l00334"></a>00334 TIDY_EXPORT ctmbstr TIDY_CALL     <a class="code" href="group__Basic.html#gab7b404ada690635341d2e2d332102b36">tidyReleaseDate</a>(<span class="keywordtype">void</span>);
<a name="l00335"></a>00335 
<a name="l00336"></a>00336 <span class="comment">/* Diagnostics and Repair</span>
<a name="l00337"></a>00337 <span class="comment">*/</span>
<a name="l00338"></a>00338 <span class="comment"></span>
<a name="l00339"></a>00339 <span class="comment">/** Get status of current document. */</span>
<a name="l00340"></a>00340 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Basic.html#gaf45a8fb57fb9bfce89c42e1cc9d3e760">tidyStatus</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00341"></a>00341 <span class="comment"></span>
<a name="l00342"></a>00342 <span class="comment">/** Detected HTML version: 0, 2, 3 or 4 */</span>
<a name="l00343"></a>00343 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Basic.html#ga8fbec4bc2b67c4f525440cfc7196b443">tidyDetectedHtmlVersion</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00344"></a>00344 <span class="comment"></span>
<a name="l00345"></a>00345 <span class="comment">/** Input is XHTML? */</span>
<a name="l00346"></a>00346 TIDY_EXPORT Bool TIDY_CALL        <a class="code" href="group__Basic.html#gaf3279c9a0506629d2ae766c31c1de48d">tidyDetectedXhtml</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00347"></a>00347 <span class="comment"></span>
<a name="l00348"></a>00348 <span class="comment">/** Input is generic XML (not HTML or XHTML)? */</span>
<a name="l00349"></a>00349 TIDY_EXPORT Bool TIDY_CALL        <a class="code" href="group__Basic.html#ga8dd761b5e230119f8eb6c412f12fdec2">tidyDetectedGenericXml</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00350"></a>00350 <span class="comment"></span>
<a name="l00351"></a>00351 <span class="comment">/** Number of Tidy errors encountered.  If &gt; 0, output is suppressed</span>
<a name="l00352"></a>00352 <span class="comment">**  unless TidyForceOutput is set.</span>
<a name="l00353"></a>00353 <span class="comment">*/</span>
<a name="l00354"></a>00354 TIDY_EXPORT uint TIDY_CALL        <a class="code" href="group__Basic.html#ga3617548e3669d00ad074daaaa8f3460d">tidyErrorCount</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00355"></a>00355 <span class="comment"></span>
<a name="l00356"></a>00356 <span class="comment">/** Number of Tidy warnings encountered. */</span>
<a name="l00357"></a>00357 TIDY_EXPORT uint TIDY_CALL        <a class="code" href="group__Basic.html#ga29b0c36f75584a2a26422b021561f19c">tidyWarningCount</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00358"></a>00358 <span class="comment"></span>
<a name="l00359"></a>00359 <span class="comment">/** Number of Tidy accessibility warnings encountered. */</span>
<a name="l00360"></a>00360 TIDY_EXPORT uint TIDY_CALL        <a class="code" href="group__Basic.html#ga56ad617084cdcbb485f06f597de7dedb">tidyAccessWarningCount</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00361"></a>00361 <span class="comment"></span>
<a name="l00362"></a>00362 <span class="comment">/** Number of Tidy configuration errors encountered. */</span>
<a name="l00363"></a>00363 TIDY_EXPORT uint TIDY_CALL        <a class="code" href="group__Basic.html#gac17c01a0dbb8f73bdee29df48e499988">tidyConfigErrorCount</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00364"></a>00364 
<a name="l00365"></a>00365 <span class="comment">/* Get/Set configuration options</span>
<a name="l00366"></a>00366 <span class="comment">*/</span><span class="comment"></span>
<a name="l00367"></a>00367 <span class="comment">/** Load an ASCII Tidy configuration file */</span>
<a name="l00368"></a>00368 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Basic.html#ga2dec710c0d4927e76a7b0d338b11693a">tidyLoadConfig</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, ctmbstr configFile );
<a name="l00369"></a>00369 <span class="comment"></span>
<a name="l00370"></a>00370 <span class="comment">/** Load a Tidy configuration file with the specified character encoding */</span>
<a name="l00371"></a>00371 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Basic.html#gac677de148c6f00fc96a682c21433ab1c">tidyLoadConfigEnc</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, ctmbstr configFile,
<a name="l00372"></a>00372                                                      ctmbstr charenc );
<a name="l00373"></a>00373 
<a name="l00374"></a>00374 TIDY_EXPORT Bool TIDY_CALL        tidyFileExists( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, ctmbstr filename );
<a name="l00375"></a>00375 
<a name="l00376"></a>00376 <span class="comment"></span>
<a name="l00377"></a>00377 <span class="comment">/** Set the input/output character encoding for parsing markup.</span>
<a name="l00378"></a>00378 <span class="comment">**  Values include: ascii, latin1, raw, utf8, iso2022, mac,</span>
<a name="l00379"></a>00379 <span class="comment">**  win1252, utf16le, utf16be, utf16, big5 and shiftjis.  Case in-sensitive.</span>
<a name="l00380"></a>00380 <span class="comment">*/</span>
<a name="l00381"></a>00381 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Basic.html#ga2612e184472c2a59ca822a37d030e9af">tidySetCharEncoding</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, ctmbstr encnam );
<a name="l00382"></a>00382 <span class="comment"></span>
<a name="l00383"></a>00383 <span class="comment">/** Set the input encoding for parsing markup.</span>
<a name="l00384"></a>00384 <span class="comment">** As for tidySetCharEncoding but only affects the input encoding</span>
<a name="l00385"></a>00385 <span class="comment">**/</span>
<a name="l00386"></a>00386 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Basic.html#ga05203a9193542a67b8396cf6ca8acf59">tidySetInCharEncoding</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, ctmbstr encnam );
<a name="l00387"></a>00387 <span class="comment"></span>
<a name="l00388"></a>00388 <span class="comment">/** Set the output encoding.</span>
<a name="l00389"></a>00389 <span class="comment">**/</span>
<a name="l00390"></a>00390 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Basic.html#ga9b6bd07e38bf320cf88663a29967f1e9">tidySetOutCharEncoding</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, ctmbstr encnam );
<a name="l00391"></a>00391 <span class="comment"></span>
<a name="l00392"></a>00392 <span class="comment">/** @} end Basic group */</span>
<a name="l00393"></a>00393 
<a name="l00394"></a>00394 <span class="comment"></span>
<a name="l00395"></a>00395 <span class="comment">/** @defgroup Configuration Configuration Options</span>
<a name="l00396"></a>00396 <span class="comment">**</span>
<a name="l00397"></a>00397 <span class="comment">** Functions for getting and setting Tidy configuration options.</span>
<a name="l00398"></a>00398 <span class="comment">** @{</span>
<a name="l00399"></a>00399 <span class="comment">*/</span>
<a name="l00400"></a>00400 <span class="comment"></span>
<a name="l00401"></a>00401 <span class="comment">/** Applications using TidyLib may want to augment command-line and</span>
<a name="l00402"></a>00402 <span class="comment">**  configuration file options.  Setting this callback allows an application </span>
<a name="l00403"></a>00403 <span class="comment">**  developer to examine command-line and configuration file options after</span>
<a name="l00404"></a>00404 <span class="comment">**  TidyLib has examined them and failed to recognize them.</span>
<a name="l00405"></a>00405 <span class="comment">**/</span>
<a name="l00406"></a>00406 
<a name="l00407"></a><a class="code" href="group__Configuration.html#gaee8a8bcb6091bd36f6fc20507a4544fc">00407</a> <span class="keyword">typedef</span> Bool (TIDY_CALL *<a class="code" href="group__Configuration.html#gaee8a8bcb6091bd36f6fc20507a4544fc">TidyOptCallback</a>)( ctmbstr option, ctmbstr value );
<a name="l00408"></a>00408 
<a name="l00409"></a>00409 TIDY_EXPORT Bool TIDY_CALL          tidySetOptionCallback( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, <a class="code" href="group__Configuration.html#gaee8a8bcb6091bd36f6fc20507a4544fc">TidyOptCallback</a> pOptCallback );
<a name="l00410"></a>00410 <span class="comment"></span>
<a name="l00411"></a>00411 <span class="comment">/** Get option ID by name */</span>
<a name="l00412"></a>00412 TIDY_EXPORT TidyOptionId TIDY_CALL  <a class="code" href="group__Configuration.html#ga500f31ba81d015b8ce9dad6f2a6ade75">tidyOptGetIdForName</a>( ctmbstr optnam );
<a name="l00413"></a>00413 <span class="comment"></span>
<a name="l00414"></a>00414 <span class="comment">/** Get iterator for list of option */</span><span class="comment"></span>
<a name="l00415"></a>00415 <span class="comment">/** </span>
<a name="l00416"></a>00416 <span class="comment">Example:</span>
<a name="l00417"></a>00417 <span class="comment">&lt;pre&gt;</span>
<a name="l00418"></a>00418 <span class="comment">TidyIterator itOpt = tidyGetOptionList( tdoc );</span>
<a name="l00419"></a>00419 <span class="comment">while ( itOpt )</span>
<a name="l00420"></a>00420 <span class="comment">{</span>
<a name="l00421"></a>00421 <span class="comment">  TidyOption opt = tidyGetNextOption( tdoc, &amp;itOpt );</span>
<a name="l00422"></a>00422 <span class="comment">  .. get/set option values ..</span>
<a name="l00423"></a>00423 <span class="comment">}</span>
<a name="l00424"></a>00424 <span class="comment">&lt;/pre&gt;</span>
<a name="l00425"></a>00425 <span class="comment">*/</span>
<a name="l00426"></a>00426 
<a name="l00427"></a>00427 TIDY_EXPORT TidyIterator TIDY_CALL  <a class="code" href="group__Configuration.html#gab92a35ffbd3b0b668534d63f94d2486f">tidyGetOptionList</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );<span class="comment"></span>
<a name="l00428"></a>00428 <span class="comment">/** Get next Option */</span>
<a name="l00429"></a>00429 TIDY_EXPORT <a class="code" href="structTidyOption.html">TidyOption</a> TIDY_CALL    <a class="code" href="group__Configuration.html#ga1a3088dacc539487e00f1eb4009dafc0">tidyGetNextOption</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, TidyIterator* pos );
<a name="l00430"></a>00430 <span class="comment"></span>
<a name="l00431"></a>00431 <span class="comment">/** Lookup option by ID */</span>
<a name="l00432"></a>00432 TIDY_EXPORT <a class="code" href="structTidyOption.html">TidyOption</a> TIDY_CALL    <a class="code" href="group__Configuration.html#ga030c695d6407b2756856eb1862642cfe">tidyGetOption</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, TidyOptionId optId );<span class="comment"></span>
<a name="l00433"></a>00433 <span class="comment">/** Lookup option by name */</span>
<a name="l00434"></a>00434 TIDY_EXPORT <a class="code" href="structTidyOption.html">TidyOption</a> TIDY_CALL    <a class="code" href="group__Configuration.html#gaeae2e147645697fc54234ff2526a8108">tidyGetOptionByName</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, ctmbstr optnam );
<a name="l00435"></a>00435 <span class="comment"></span>
<a name="l00436"></a>00436 <span class="comment">/** Get ID of given Option */</span>
<a name="l00437"></a>00437 TIDY_EXPORT TidyOptionId TIDY_CALL  <a class="code" href="group__Configuration.html#ga51cf095b76921b4e290e14814998f096">tidyOptGetId</a>( <a class="code" href="structTidyOption.html">TidyOption</a> opt );
<a name="l00438"></a>00438 <span class="comment"></span>
<a name="l00439"></a>00439 <span class="comment">/** Get name of given Option */</span>
<a name="l00440"></a>00440 TIDY_EXPORT ctmbstr TIDY_CALL       <a class="code" href="group__Configuration.html#gaf370cd2ea113747f50da185fda24adcb">tidyOptGetName</a>( <a class="code" href="structTidyOption.html">TidyOption</a> opt );
<a name="l00441"></a>00441 <span class="comment"></span>
<a name="l00442"></a>00442 <span class="comment">/** Get datatype of given Option */</span>
<a name="l00443"></a>00443 TIDY_EXPORT TidyOptionType TIDY_CALL <a class="code" href="group__Configuration.html#ga06e2685cc2950b182ff2f7136d170a34">tidyOptGetType</a>( <a class="code" href="structTidyOption.html">TidyOption</a> opt );
<a name="l00444"></a>00444 <span class="comment"></span>
<a name="l00445"></a>00445 <span class="comment">/** Is Option read-only? */</span>
<a name="l00446"></a>00446 TIDY_EXPORT Bool TIDY_CALL          <a class="code" href="group__Configuration.html#ga6aba2ccdb1237a70f5fe1393fee0ce4d">tidyOptIsReadOnly</a>( <a class="code" href="structTidyOption.html">TidyOption</a> opt );
<a name="l00447"></a>00447 <span class="comment"></span>
<a name="l00448"></a>00448 <span class="comment">/** Get category of given Option */</span>
<a name="l00449"></a>00449 TIDY_EXPORT TidyConfigCategory TIDY_CALL <a class="code" href="group__Configuration.html#ga1d8b72e64e4d949dc21599fa788e842f">tidyOptGetCategory</a>( <a class="code" href="structTidyOption.html">TidyOption</a> opt );
<a name="l00450"></a>00450 <span class="comment"></span>
<a name="l00451"></a>00451 <span class="comment">/** Get default value of given Option as a string */</span>
<a name="l00452"></a>00452 TIDY_EXPORT ctmbstr TIDY_CALL       <a class="code" href="group__Configuration.html#gab9e02c9927fe2c382ec5f81b4acf9cb4">tidyOptGetDefault</a>( <a class="code" href="structTidyOption.html">TidyOption</a> opt );
<a name="l00453"></a>00453 <span class="comment"></span>
<a name="l00454"></a>00454 <span class="comment">/** Get default value of given Option as an unsigned integer */</span>
<a name="l00455"></a>00455 TIDY_EXPORT ulong TIDY_CALL         <a class="code" href="group__Configuration.html#gafc8df35e864dd3a24f23aca3c2f8bd9d">tidyOptGetDefaultInt</a>( <a class="code" href="structTidyOption.html">TidyOption</a> opt );
<a name="l00456"></a>00456 <span class="comment"></span>
<a name="l00457"></a>00457 <span class="comment">/** Get default value of given Option as a Boolean value */</span>
<a name="l00458"></a>00458 TIDY_EXPORT Bool TIDY_CALL          <a class="code" href="group__Configuration.html#gadadea4da66e3718e02b720c2b59d170b">tidyOptGetDefaultBool</a>( <a class="code" href="structTidyOption.html">TidyOption</a> opt );
<a name="l00459"></a>00459 <span class="comment"></span>
<a name="l00460"></a>00460 <span class="comment">/** Iterate over Option &quot;pick list&quot; */</span>
<a name="l00461"></a>00461 TIDY_EXPORT TidyIterator TIDY_CALL  <a class="code" href="group__Configuration.html#ga31f815fe2b5bf1e00d6b50be62edd0ab">tidyOptGetPickList</a>( <a class="code" href="structTidyOption.html">TidyOption</a> opt );<span class="comment"></span>
<a name="l00462"></a>00462 <span class="comment">/** Get next string value of Option &quot;pick list&quot; */</span>
<a name="l00463"></a>00463 TIDY_EXPORT ctmbstr TIDY_CALL       <a class="code" href="group__Configuration.html#gad1366c5c458f38d2a9c6a6335e6704d9">tidyOptGetNextPick</a>( <a class="code" href="structTidyOption.html">TidyOption</a> opt, TidyIterator* pos );
<a name="l00464"></a>00464 <span class="comment"></span>
<a name="l00465"></a>00465 <span class="comment">/** Get current Option value as a string */</span>
<a name="l00466"></a>00466 TIDY_EXPORT ctmbstr TIDY_CALL       <a class="code" href="group__Configuration.html#ga0fbe23ab1e4ec374fa38e6f514617e4d">tidyOptGetValue</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, TidyOptionId optId );<span class="comment"></span>
<a name="l00467"></a>00467 <span class="comment">/** Set Option value as a string */</span>
<a name="l00468"></a>00468 TIDY_EXPORT Bool TIDY_CALL          <a class="code" href="group__Configuration.html#gaf37bdad3b6809d8cb78e7d6316d4ba69">tidyOptSetValue</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, TidyOptionId optId, ctmbstr val );<span class="comment"></span>
<a name="l00469"></a>00469 <span class="comment">/** Set named Option value as a string.  Good if not sure of type. */</span>
<a name="l00470"></a>00470 TIDY_EXPORT Bool TIDY_CALL          <a class="code" href="group__Configuration.html#gad09fbcbbaf83fbf93e0d7be9c9bb30c0">tidyOptParseValue</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, ctmbstr optnam, ctmbstr val );
<a name="l00471"></a>00471 <span class="comment"></span>
<a name="l00472"></a>00472 <span class="comment">/** Get current Option value as an integer */</span>
<a name="l00473"></a>00473 TIDY_EXPORT ulong TIDY_CALL         <a class="code" href="group__Configuration.html#ga7ff683612d446b07318517e564cccc7a">tidyOptGetInt</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, TidyOptionId optId );<span class="comment"></span>
<a name="l00474"></a>00474 <span class="comment">/** Set Option value as an integer */</span>
<a name="l00475"></a>00475 TIDY_EXPORT Bool TIDY_CALL          <a class="code" href="group__Configuration.html#gad9e75a64c8dcbc54e791959cf934e1ad">tidyOptSetInt</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, TidyOptionId optId, ulong val );
<a name="l00476"></a>00476 <span class="comment"></span>
<a name="l00477"></a>00477 <span class="comment">/** Get current Option value as a Boolean flag */</span>
<a name="l00478"></a>00478 TIDY_EXPORT Bool TIDY_CALL          <a class="code" href="group__Configuration.html#ga09e6c999e9e7ebc94ea3d9cf5d674125">tidyOptGetBool</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, TidyOptionId optId );<span class="comment"></span>
<a name="l00479"></a>00479 <span class="comment">/** Set Option value as a Boolean flag */</span>
<a name="l00480"></a>00480 TIDY_EXPORT Bool TIDY_CALL          <a class="code" href="group__Configuration.html#gac9de7e155bea5c28713f2bfb93614472">tidyOptSetBool</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, TidyOptionId optId, Bool val );
<a name="l00481"></a>00481 <span class="comment"></span>
<a name="l00482"></a>00482 <span class="comment">/** Reset option to default value by ID */</span>
<a name="l00483"></a>00483 TIDY_EXPORT Bool TIDY_CALL          <a class="code" href="group__Configuration.html#ga2aa45ad67758ca0b18d14eafa37fe080">tidyOptResetToDefault</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, TidyOptionId opt );<span class="comment"></span>
<a name="l00484"></a>00484 <span class="comment">/** Reset all options to their default values */</span>
<a name="l00485"></a>00485 TIDY_EXPORT Bool TIDY_CALL          <a class="code" href="group__Configuration.html#ga874ce26884f0eeaf692c30758688888a">tidyOptResetAllToDefault</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00486"></a>00486 <span class="comment"></span>
<a name="l00487"></a>00487 <span class="comment">/** Take a snapshot of current config settings */</span>
<a name="l00488"></a>00488 TIDY_EXPORT Bool TIDY_CALL          <a class="code" href="group__Configuration.html#ga4beb2c73c90c3e2ae589c2642478cebd">tidyOptSnapshot</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );<span class="comment"></span>
<a name="l00489"></a>00489 <span class="comment">/** Reset config settings to snapshot (after document processing) */</span>
<a name="l00490"></a>00490 TIDY_EXPORT Bool TIDY_CALL          <a class="code" href="group__Configuration.html#gae6212b8f32990763cc18a6d3f05eb191">tidyOptResetToSnapshot</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00491"></a>00491 <span class="comment"></span>
<a name="l00492"></a>00492 <span class="comment">/** Any settings different than default? */</span>
<a name="l00493"></a>00493 TIDY_EXPORT Bool TIDY_CALL          <a class="code" href="group__Configuration.html#ga083cb42d6f4413604240b5c1b3aa2070">tidyOptDiffThanDefault</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );<span class="comment"></span>
<a name="l00494"></a>00494 <span class="comment">/** Any settings different than snapshot? */</span>
<a name="l00495"></a>00495 TIDY_EXPORT Bool TIDY_CALL          <a class="code" href="group__Configuration.html#ga793bc9e177aa90301802e44c4fc22e0e">tidyOptDiffThanSnapshot</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00496"></a>00496 <span class="comment"></span>
<a name="l00497"></a>00497 <span class="comment">/** Copy current configuration settings from one document to another */</span>
<a name="l00498"></a>00498 TIDY_EXPORT Bool TIDY_CALL          <a class="code" href="group__Configuration.html#ga0b6cb26ab5dbbe0a0841d605fbd06fad">tidyOptCopyConfig</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdocTo, <a class="code" href="structTidyDoc.html">TidyDoc</a> tdocFrom );
<a name="l00499"></a>00499 <span class="comment"></span>
<a name="l00500"></a>00500 <span class="comment">/** Get character encoding name.  Used with TidyCharEncoding,</span>
<a name="l00501"></a>00501 <span class="comment">**  TidyOutCharEncoding, TidyInCharEncoding */</span>
<a name="l00502"></a>00502 TIDY_EXPORT ctmbstr TIDY_CALL       <a class="code" href="group__Configuration.html#ga47f8502cc202fc7423937647957955a3">tidyOptGetEncName</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, TidyOptionId optId );
<a name="l00503"></a>00503 <span class="comment"></span>
<a name="l00504"></a>00504 <span class="comment">/** Get current pick list value for option by ID.  Useful for enum types. */</span>
<a name="l00505"></a>00505 TIDY_EXPORT ctmbstr TIDY_CALL       <a class="code" href="group__Configuration.html#ga0785047cc73d5fbc88691861a0fa9c78">tidyOptGetCurrPick</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, TidyOptionId optId);
<a name="l00506"></a>00506 <span class="comment"></span>
<a name="l00507"></a>00507 <span class="comment">/** Iterate over user declared tags */</span>
<a name="l00508"></a>00508 TIDY_EXPORT TidyIterator TIDY_CALL  <a class="code" href="group__Configuration.html#ga55f30cf9e507f8fc66330ec3b0132620">tidyOptGetDeclTagList</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );<span class="comment"></span>
<a name="l00509"></a>00509 <span class="comment">/** Get next declared tag of specified type: TidyInlineTags, TidyBlockTags,</span>
<a name="l00510"></a>00510 <span class="comment">**  TidyEmptyTags, TidyPreTags */</span>
<a name="l00511"></a>00511 TIDY_EXPORT ctmbstr TIDY_CALL       <a class="code" href="group__Configuration.html#gacec933eef8f9eec3dfa4382e05cab251">tidyOptGetNextDeclTag</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, 
<a name="l00512"></a>00512                                                           TidyOptionId optId,
<a name="l00513"></a>00513                                                           TidyIterator* iter );<span class="comment"></span>
<a name="l00514"></a>00514 <span class="comment">/** Get option description */</span>
<a name="l00515"></a>00515 TIDY_EXPORT ctmbstr TIDY_CALL       <a class="code" href="group__Configuration.html#gafca3ed506463e192187133ff646a643d">tidyOptGetDoc</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, <a class="code" href="structTidyOption.html">TidyOption</a> opt );
<a name="l00516"></a>00516 <span class="comment"></span>
<a name="l00517"></a>00517 <span class="comment">/** Iterate over a list of related options */</span>
<a name="l00518"></a>00518 TIDY_EXPORT TidyIterator TIDY_CALL  <a class="code" href="group__Configuration.html#gaeed1ef5cb5329f3f5aca0a8ad7e8ea4f">tidyOptGetDocLinksList</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc,
<a name="l00519"></a>00519                                                   <a class="code" href="structTidyOption.html">TidyOption</a> opt );<span class="comment"></span>
<a name="l00520"></a>00520 <span class="comment">/** Get next related option */</span>
<a name="l00521"></a>00521 TIDY_EXPORT <a class="code" href="structTidyOption.html">TidyOption</a> TIDY_CALL    <a class="code" href="group__Configuration.html#ga1db79a95067d6364c02263d9492fa9e8">tidyOptGetNextDocLinks</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc,
<a name="l00522"></a>00522                                                   TidyIterator* pos );
<a name="l00523"></a>00523 <span class="comment"></span>
<a name="l00524"></a>00524 <span class="comment">/** @} end Configuration group */</span>
<a name="l00525"></a>00525 <span class="comment"></span>
<a name="l00526"></a>00526 <span class="comment">/** @defgroup IO  I/O and Messages</span>
<a name="l00527"></a>00527 <span class="comment">**</span>
<a name="l00528"></a>00528 <span class="comment">** By default, Tidy will define, create and use </span>
<a name="l00529"></a>00529 <span class="comment">** instances of input and output handlers for </span>
<a name="l00530"></a>00530 <span class="comment">** standard C buffered I/O (i.e. FILE* stdin,</span>
<a name="l00531"></a>00531 <span class="comment">** FILE* stdout and FILE* stderr for content</span>
<a name="l00532"></a>00532 <span class="comment">** input, content output and diagnostic output,</span>
<a name="l00533"></a>00533 <span class="comment">** respectively.  A FILE* cfgFile input handler</span>
<a name="l00534"></a>00534 <span class="comment">** will be used for config files.  Command line</span>
<a name="l00535"></a>00535 <span class="comment">** options will just be set directly.</span>
<a name="l00536"></a>00536 <span class="comment">**</span>
<a name="l00537"></a>00537 <span class="comment">** @{</span>
<a name="l00538"></a>00538 <span class="comment">*/</span>
<a name="l00539"></a>00539 
<a name="l00540"></a>00540 <span class="comment">/*****************</span>
<a name="l00541"></a>00541 <span class="comment">   Input Source</span>
<a name="l00542"></a>00542 <span class="comment">*****************/</span><span class="comment"></span>
<a name="l00543"></a>00543 <span class="comment">/** Input Callback: get next byte of input */</span>
<a name="l00544"></a><a class="code" href="group__IO.html#ga6951f79d4b50288e96a3896ab01393d6">00544</a> <span class="keyword">typedef</span> int  (TIDY_CALL *<a class="code" href="group__IO.html#ga6951f79d4b50288e96a3896ab01393d6">TidyGetByteFunc</a>)( <span class="keywordtype">void</span>* sourceData );
<a name="l00545"></a>00545 <span class="comment"></span>
<a name="l00546"></a>00546 <span class="comment">/** Input Callback: unget a byte of input */</span>
<a name="l00547"></a><a class="code" href="group__IO.html#ga298b882c5fc7cc969ef58fb187bdd371">00547</a> <span class="keyword">typedef</span> void (TIDY_CALL *<a class="code" href="group__IO.html#ga298b882c5fc7cc969ef58fb187bdd371">TidyUngetByteFunc</a>)( <span class="keywordtype">void</span>* sourceData, byte bt );
<a name="l00548"></a>00548 <span class="comment"></span>
<a name="l00549"></a>00549 <span class="comment">/** Input Callback: is end of input? */</span>
<a name="l00550"></a><a class="code" href="group__IO.html#ga9f8e1bb4c4740ffb399ec424594c4972">00550</a> <span class="keyword">typedef</span> Bool (TIDY_CALL *<a class="code" href="group__IO.html#ga9f8e1bb4c4740ffb399ec424594c4972">TidyEOFFunc</a>)( <span class="keywordtype">void</span>* sourceData );
<a name="l00551"></a>00551 <span class="comment"></span>
<a name="l00552"></a>00552 <span class="comment">/** End of input &quot;character&quot; */</span>
<a name="l00553"></a><a class="code" href="group__IO.html#ga9a078b706ec6f37cce40958f6f68585a">00553</a> <span class="preprocessor">#define EndOfStream (~0u)</span>
<a name="l00554"></a>00554 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00555"></a>00555 <span class="comment">/** TidyInputSource - Delivers raw bytes of input</span>
<a name="l00556"></a>00556 <span class="comment">*/</span>
<a name="l00557"></a>00557 TIDY_STRUCT
<a name="l00558"></a><a class="code" href="struct__TidyInputSource.html">00558</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__TidyInputSource.html">_TidyInputSource</a>
<a name="l00559"></a>00559 {
<a name="l00560"></a>00560   <span class="comment">/* Instance data */</span>
<a name="l00561"></a><a class="code" href="struct__TidyInputSource.html#a19bd9d8877bfc702ceae4e174d0b07d4">00561</a>   <span class="keywordtype">void</span>*               sourceData;  <span class="comment">/**&lt; Input context.  Passed to callbacks */</span>
<a name="l00562"></a>00562 
<a name="l00563"></a>00563   <span class="comment">/* Methods */</span>
<a name="l00564"></a><a class="code" href="struct__TidyInputSource.html#a4c318270e25e2e4dd9506cb04542b7d8">00564</a>   <a class="code" href="group__IO.html#ga6951f79d4b50288e96a3896ab01393d6">TidyGetByteFunc</a>     <a class="code" href="struct__TidyInputSource.html#a4c318270e25e2e4dd9506cb04542b7d8">getByte</a>;     <span class="comment">/**&lt; Pointer to &quot;get byte&quot; callback */</span>
<a name="l00565"></a><a class="code" href="struct__TidyInputSource.html#a8bb61c749e1295207cd92752e63ae505">00565</a>   <a class="code" href="group__IO.html#ga298b882c5fc7cc969ef58fb187bdd371">TidyUngetByteFunc</a>   <a class="code" href="struct__TidyInputSource.html#a8bb61c749e1295207cd92752e63ae505">ungetByte</a>;   <span class="comment">/**&lt; Pointer to &quot;unget&quot; callback */</span>
<a name="l00566"></a><a class="code" href="struct__TidyInputSource.html#af90ba85f6caffb1321a8fe3ef4b7bebb">00566</a>   <a class="code" href="group__IO.html#ga9f8e1bb4c4740ffb399ec424594c4972">TidyEOFFunc</a>         <a class="code" href="struct__TidyInputSource.html#af90ba85f6caffb1321a8fe3ef4b7bebb">eof</a>;         <span class="comment">/**&lt; Pointer to &quot;eof&quot; callback */</span>
<a name="l00567"></a>00567 } <a class="code" href="group__IO.html#ga86fcc3c86bd63b26a559938bc38d34bb">TidyInputSource</a>;
<a name="l00568"></a>00568 <span class="comment"></span>
<a name="l00569"></a>00569 <span class="comment">/** Facilitates user defined source by providing</span>
<a name="l00570"></a>00570 <span class="comment">**  an entry point to marshal pointers-to-functions.</span>
<a name="l00571"></a>00571 <span class="comment">**  Needed by .NET and possibly other language bindings.</span>
<a name="l00572"></a>00572 <span class="comment">*/</span>
<a name="l00573"></a>00573 TIDY_EXPORT Bool TIDY_CALL <a class="code" href="group__IO.html#gab446af273e331cb0440dd01b6990d2d0">tidyInitSource</a>( <a class="code" href="group__IO.html#ga86fcc3c86bd63b26a559938bc38d34bb">TidyInputSource</a>*  source,
<a name="l00574"></a>00574                                           <span class="keywordtype">void</span>*             srcData,
<a name="l00575"></a>00575                                           <a class="code" href="group__IO.html#ga6951f79d4b50288e96a3896ab01393d6">TidyGetByteFunc</a>   gbFunc,
<a name="l00576"></a>00576                                           <a class="code" href="group__IO.html#ga298b882c5fc7cc969ef58fb187bdd371">TidyUngetByteFunc</a> ugbFunc,
<a name="l00577"></a>00577                                           <a class="code" href="group__IO.html#ga9f8e1bb4c4740ffb399ec424594c4972">TidyEOFFunc</a>       endFunc );
<a name="l00578"></a>00578 <span class="comment"></span>
<a name="l00579"></a>00579 <span class="comment">/** Helper: get next byte from input source */</span>
<a name="l00580"></a>00580 TIDY_EXPORT uint TIDY_CALL <a class="code" href="group__IO.html#gadba396ffec9f29b27d73a23264dcfa0b">tidyGetByte</a>( <a class="code" href="group__IO.html#ga86fcc3c86bd63b26a559938bc38d34bb">TidyInputSource</a>* source );
<a name="l00581"></a>00581 <span class="comment"></span>
<a name="l00582"></a>00582 <span class="comment">/** Helper: unget byte back to input source */</span>
<a name="l00583"></a>00583 TIDY_EXPORT <span class="keywordtype">void</span> TIDY_CALL <a class="code" href="group__IO.html#ga0c8d46de315cabb0ac7d2cf01ca183d7">tidyUngetByte</a>( <a class="code" href="group__IO.html#ga86fcc3c86bd63b26a559938bc38d34bb">TidyInputSource</a>* source, uint byteValue );
<a name="l00584"></a>00584 <span class="comment"></span>
<a name="l00585"></a>00585 <span class="comment">/** Helper: check if input source at end */</span>
<a name="l00586"></a>00586 TIDY_EXPORT Bool TIDY_CALL <a class="code" href="group__IO.html#ga399df5ba17614205964a665f7b1726a6">tidyIsEOF</a>( <a class="code" href="group__IO.html#ga86fcc3c86bd63b26a559938bc38d34bb">TidyInputSource</a>* source );
<a name="l00587"></a>00587 
<a name="l00588"></a>00588 
<a name="l00589"></a>00589 <span class="comment">/****************</span>
<a name="l00590"></a>00590 <span class="comment">   Output Sink</span>
<a name="l00591"></a>00591 <span class="comment">****************/</span><span class="comment"></span>
<a name="l00592"></a>00592 <span class="comment">/** Output callback: send a byte to output */</span>
<a name="l00593"></a><a class="code" href="group__IO.html#ga63bcce5aa5f52e4e2e22aedd750b8bbc">00593</a> <span class="keyword">typedef</span> void (TIDY_CALL *<a class="code" href="group__IO.html#ga63bcce5aa5f52e4e2e22aedd750b8bbc">TidyPutByteFunc</a>)( <span class="keywordtype">void</span>* sinkData, byte bt );
<a name="l00594"></a>00594 
<a name="l00595"></a>00595 <span class="comment"></span>
<a name="l00596"></a>00596 <span class="comment">/** TidyOutputSink - accepts raw bytes of output</span>
<a name="l00597"></a>00597 <span class="comment">*/</span>
<a name="l00598"></a>00598 TIDY_STRUCT
<a name="l00599"></a><a class="code" href="struct__TidyOutputSink.html">00599</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__TidyOutputSink.html">_TidyOutputSink</a>
<a name="l00600"></a>00600 {
<a name="l00601"></a>00601   <span class="comment">/* Instance data */</span>
<a name="l00602"></a><a class="code" href="struct__TidyOutputSink.html#a8ea61dfa1ce4ba41a7a9c50b7729ab8a">00602</a>   <span class="keywordtype">void</span>*               sinkData;  <span class="comment">/**&lt; Output context.  Passed to callbacks */</span>
<a name="l00603"></a>00603 
<a name="l00604"></a>00604   <span class="comment">/* Methods */</span>
<a name="l00605"></a><a class="code" href="struct__TidyOutputSink.html#a0b392463d9767dc9fbed2f524fbe7407">00605</a>   <a class="code" href="group__IO.html#ga63bcce5aa5f52e4e2e22aedd750b8bbc">TidyPutByteFunc</a>     <a class="code" href="struct__TidyOutputSink.html#a0b392463d9767dc9fbed2f524fbe7407">putByte</a>;   <span class="comment">/**&lt; Pointer to &quot;put byte&quot; callback */</span>
<a name="l00606"></a>00606 } <a class="code" href="group__IO.html#ga6bdd15de48364d2b5dbf2141109d3f98">TidyOutputSink</a>;
<a name="l00607"></a>00607 <span class="comment"></span>
<a name="l00608"></a>00608 <span class="comment">/** Facilitates user defined sinks by providing</span>
<a name="l00609"></a>00609 <span class="comment">**  an entry point to marshal pointers-to-functions.</span>
<a name="l00610"></a>00610 <span class="comment">**  Needed by .NET and possibly other language bindings.</span>
<a name="l00611"></a>00611 <span class="comment">*/</span>
<a name="l00612"></a>00612 TIDY_EXPORT Bool TIDY_CALL <a class="code" href="group__IO.html#ga7e93289be3a7253cdf99a96285e6a2d4">tidyInitSink</a>( <a class="code" href="group__IO.html#ga6bdd15de48364d2b5dbf2141109d3f98">TidyOutputSink</a>* sink, 
<a name="l00613"></a>00613                                         <span class="keywordtype">void</span>*           snkData,
<a name="l00614"></a>00614                                         <a class="code" href="group__IO.html#ga63bcce5aa5f52e4e2e22aedd750b8bbc">TidyPutByteFunc</a> pbFunc );
<a name="l00615"></a>00615 <span class="comment"></span>
<a name="l00616"></a>00616 <span class="comment">/** Helper: send a byte to output */</span>
<a name="l00617"></a>00617 TIDY_EXPORT <span class="keywordtype">void</span> TIDY_CALL <a class="code" href="group__IO.html#ga2a34772782d7b786e37012fce4cd2425">tidyPutByte</a>( <a class="code" href="group__IO.html#ga6bdd15de48364d2b5dbf2141109d3f98">TidyOutputSink</a>* sink, uint byteValue );
<a name="l00618"></a>00618 
<a name="l00619"></a>00619 <span class="comment"></span>
<a name="l00620"></a>00620 <span class="comment">/** Callback to filter messages by diagnostic level:</span>
<a name="l00621"></a>00621 <span class="comment">**  info, warning, etc.  Just set diagnostic output </span>
<a name="l00622"></a>00622 <span class="comment">**  handler to redirect all diagnostics output.  Return true</span>
<a name="l00623"></a>00623 <span class="comment">**  to proceed with output, false to cancel.</span>
<a name="l00624"></a>00624 <span class="comment">*/</span>
<a name="l00625"></a><a class="code" href="group__IO.html#ga29c5bee28b95924a97ea4fbb81668c5e">00625</a> <span class="keyword">typedef</span> Bool (TIDY_CALL *<a class="code" href="group__IO.html#ga29c5bee28b95924a97ea4fbb81668c5e">TidyReportFilter</a>)( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, TidyReportLevel lvl,
<a name="l00626"></a>00626                                            uint line, uint col, ctmbstr mssg );
<a name="l00627"></a>00627 <span class="comment"></span>
<a name="l00628"></a>00628 <span class="comment">/** Give Tidy a filter callback to use */</span>
<a name="l00629"></a>00629 TIDY_EXPORT Bool TIDY_CALL    <a class="code" href="group__IO.html#ga51e02523601388bb83c2555b995e68b0">tidySetReportFilter</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc,
<a name="l00630"></a>00630                                                   <a class="code" href="group__IO.html#ga29c5bee28b95924a97ea4fbb81668c5e">TidyReportFilter</a> filtCallback );
<a name="l00631"></a>00631 <span class="comment"></span>
<a name="l00632"></a>00632 <span class="comment">/** Set error sink to named file */</span>
<a name="l00633"></a>00633 TIDY_EXPORT FILE* TIDY_CALL   <a class="code" href="group__IO.html#ga669758031bbd5d4ba957b19e77229c8b">tidySetErrorFile</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, ctmbstr errfilnam );<span class="comment"></span>
<a name="l00634"></a>00634 <span class="comment">/** Set error sink to given buffer */</span>
<a name="l00635"></a>00635 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL     <a class="code" href="group__IO.html#ga5e5cffe93edf4bea0d3214be70d6f77b">tidySetErrorBuffer</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, <a class="code" href="struct__TidyBuffer.html">TidyBuffer</a>* errbuf );<span class="comment"></span>
<a name="l00636"></a>00636 <span class="comment">/** Set error sink to given generic sink */</span>
<a name="l00637"></a>00637 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL     <a class="code" href="group__IO.html#gad47c75f3af85e7927e7ac18918ec6363">tidySetErrorSink</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, <a class="code" href="group__IO.html#ga6bdd15de48364d2b5dbf2141109d3f98">TidyOutputSink</a>* sink );
<a name="l00638"></a>00638 <span class="comment"></span>
<a name="l00639"></a>00639 <span class="comment">/** @} end IO group */</span>
<a name="l00640"></a>00640 
<a name="l00641"></a>00641 <span class="comment">/* TODO: Catalog all messages for easy translation</span>
<a name="l00642"></a>00642 <span class="comment">TIDY_EXPORT ctmbstr     tidyLookupMessage( int errorNo );</span>
<a name="l00643"></a>00643 <span class="comment">*/</span>
<a name="l00644"></a>00644 
<a name="l00645"></a>00645 
<a name="l00646"></a>00646 <span class="comment"></span>
<a name="l00647"></a>00647 <span class="comment">/** @defgroup Parse Document Parse</span>
<a name="l00648"></a>00648 <span class="comment">**</span>
<a name="l00649"></a>00649 <span class="comment">** Parse markup from a given input source.  String and filename </span>
<a name="l00650"></a>00650 <span class="comment">** functions added for convenience.  HTML/XHTML version determined</span>
<a name="l00651"></a>00651 <span class="comment">** from input.</span>
<a name="l00652"></a>00652 <span class="comment">** @{</span>
<a name="l00653"></a>00653 <span class="comment">*/</span>
<a name="l00654"></a>00654 <span class="comment"></span>
<a name="l00655"></a>00655 <span class="comment">/** Parse markup in named file */</span>
<a name="l00656"></a>00656 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Parse.html#ga5ec263f2e430dd9c9e10437f067b2a28">tidyParseFile</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, ctmbstr filename );
<a name="l00657"></a>00657 <span class="comment"></span>
<a name="l00658"></a>00658 <span class="comment">/** Parse markup from the standard input */</span>
<a name="l00659"></a>00659 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Parse.html#ga96b41ff6e6a7f9d0b9b0e901e33ad31d">tidyParseStdin</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00660"></a>00660 <span class="comment"></span>
<a name="l00661"></a>00661 <span class="comment">/** Parse markup in given string */</span>
<a name="l00662"></a>00662 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Parse.html#ga50c02fa244dcd120ae339719c2132ff9">tidyParseString</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, ctmbstr content );
<a name="l00663"></a>00663 <span class="comment"></span>
<a name="l00664"></a>00664 <span class="comment">/** Parse markup in given buffer */</span>
<a name="l00665"></a>00665 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Parse.html#gaa28ce34c95750f150205843885317851">tidyParseBuffer</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, <a class="code" href="struct__TidyBuffer.html">TidyBuffer</a>* buf );
<a name="l00666"></a>00666 <span class="comment"></span>
<a name="l00667"></a>00667 <span class="comment">/** Parse markup in given generic input source */</span>
<a name="l00668"></a>00668 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Parse.html#gaa65dad2a4ca5fa97d267ddefe1180e0e">tidyParseSource</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, <a class="code" href="group__IO.html#ga86fcc3c86bd63b26a559938bc38d34bb">TidyInputSource</a>* source);
<a name="l00669"></a>00669 <span class="comment"></span>
<a name="l00670"></a>00670 <span class="comment">/** @} End Parse group */</span>
<a name="l00671"></a>00671 
<a name="l00672"></a>00672 <span class="comment"></span>
<a name="l00673"></a>00673 <span class="comment">/** @defgroup Clean Diagnostics and Repair</span>
<a name="l00674"></a>00674 <span class="comment">**</span>
<a name="l00675"></a>00675 <span class="comment">** @{</span>
<a name="l00676"></a>00676 <span class="comment">*/</span><span class="comment"></span>
<a name="l00677"></a>00677 <span class="comment">/** Execute configured cleanup and repair operations on parsed markup */</span>
<a name="l00678"></a>00678 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Clean.html#ga11fd23eeb4acfaa0f9501effa0c21269">tidyCleanAndRepair</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00679"></a>00679 <span class="comment"></span>
<a name="l00680"></a>00680 <span class="comment">/** Run configured diagnostics on parsed and repaired markup. </span>
<a name="l00681"></a>00681 <span class="comment">**  Must call tidyCleanAndRepair() first.</span>
<a name="l00682"></a>00682 <span class="comment">*/</span>
<a name="l00683"></a>00683 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Clean.html#ga6170500974cc02114f6e4a29d44b7d77">tidyRunDiagnostics</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00684"></a>00684 <span class="comment"></span>
<a name="l00685"></a>00685 <span class="comment">/** @} end Clean group */</span>
<a name="l00686"></a>00686 
<a name="l00687"></a>00687 <span class="comment"></span>
<a name="l00688"></a>00688 <span class="comment">/** @defgroup Save Document Save Functions</span>
<a name="l00689"></a>00689 <span class="comment">**</span>
<a name="l00690"></a>00690 <span class="comment">** Save currently parsed document to the given output sink.  File name</span>
<a name="l00691"></a>00691 <span class="comment">** and string/buffer functions provided for convenience.</span>
<a name="l00692"></a>00692 <span class="comment">** @{</span>
<a name="l00693"></a>00693 <span class="comment">*/</span>
<a name="l00694"></a>00694 <span class="comment"></span>
<a name="l00695"></a>00695 <span class="comment">/** Save to named file */</span>
<a name="l00696"></a>00696 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Save.html#ga19ee6e2ee0e719a97cff443ebb19ae44">tidySaveFile</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, ctmbstr filename );
<a name="l00697"></a>00697 <span class="comment"></span>
<a name="l00698"></a>00698 <span class="comment">/** Save to standard output (FILE*) */</span>
<a name="l00699"></a>00699 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Save.html#ga6638d1800ee63fc6bea19bc2bf582be2">tidySaveStdout</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00700"></a>00700 <span class="comment"></span>
<a name="l00701"></a>00701 <span class="comment">/** Save to given TidyBuffer object */</span>
<a name="l00702"></a>00702 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Save.html#ga7e8642262c8c4d34cf7cc426647d29f0">tidySaveBuffer</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, <a class="code" href="struct__TidyBuffer.html">TidyBuffer</a>* buf );
<a name="l00703"></a>00703 <span class="comment"></span>
<a name="l00704"></a>00704 <span class="comment">/** Save document to application buffer.  If buffer is not big enough,</span>
<a name="l00705"></a>00705 <span class="comment">**  ENOMEM will be returned and the necessary buffer size will be placed</span>
<a name="l00706"></a>00706 <span class="comment">**  in *buflen.</span>
<a name="l00707"></a>00707 <span class="comment">*/</span>
<a name="l00708"></a>00708 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Save.html#gaf684fefd3e42f459cf0a4ebe937ce12b">tidySaveString</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc,
<a name="l00709"></a>00709                                                  tmbstr buffer, uint* buflen );
<a name="l00710"></a>00710 <span class="comment"></span>
<a name="l00711"></a>00711 <span class="comment">/** Save to given generic output sink */</span>
<a name="l00712"></a>00712 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Save.html#gaea985b28470453d0218092b137f71e77">tidySaveSink</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, <a class="code" href="group__IO.html#ga6bdd15de48364d2b5dbf2141109d3f98">TidyOutputSink</a>* sink );
<a name="l00713"></a>00713 <span class="comment"></span>
<a name="l00714"></a>00714 <span class="comment">/** @} end Save group */</span>
<a name="l00715"></a>00715 
<a name="l00716"></a>00716 <span class="comment"></span>
<a name="l00717"></a>00717 <span class="comment">/** @addtogroup Basic</span>
<a name="l00718"></a>00718 <span class="comment">** @{</span>
<a name="l00719"></a>00719 <span class="comment">*/</span><span class="comment"></span>
<a name="l00720"></a>00720 <span class="comment">/** Save current settings to named file.</span>
<a name="l00721"></a>00721 <span class="comment">    Only non-default values are written. */</span>
<a name="l00722"></a>00722 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Basic.html#gaaa6e0510b0d7ca0524c928143488c6ca">tidyOptSaveFile</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, ctmbstr cfgfil );
<a name="l00723"></a>00723 <span class="comment"></span>
<a name="l00724"></a>00724 <span class="comment">/** Save current settings to given output sink.</span>
<a name="l00725"></a>00725 <span class="comment">    Only non-default values are written. */</span>
<a name="l00726"></a>00726 TIDY_EXPORT <span class="keywordtype">int</span> TIDY_CALL         <a class="code" href="group__Basic.html#gabf30cc37e3e7aa07dd351f083ab747ee">tidyOptSaveSink</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, <a class="code" href="group__IO.html#ga6bdd15de48364d2b5dbf2141109d3f98">TidyOutputSink</a>* sink );
<a name="l00727"></a>00727 
<a name="l00728"></a>00728 
<a name="l00729"></a>00729 <span class="comment">/* Error reporting functions </span>
<a name="l00730"></a>00730 <span class="comment">*/</span>
<a name="l00731"></a>00731 <span class="comment"></span>
<a name="l00732"></a>00732 <span class="comment">/** Write more complete information about errors to current error sink. */</span>
<a name="l00733"></a>00733 TIDY_EXPORT <span class="keywordtype">void</span> TIDY_CALL        <a class="code" href="group__Basic.html#ga4c050ea7d2746db948ad45edb2264d70">tidyErrorSummary</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00734"></a>00734 <span class="comment"></span>
<a name="l00735"></a>00735 <span class="comment">/** Write more general information about markup to current error sink. */</span>
<a name="l00736"></a>00736 TIDY_EXPORT <span class="keywordtype">void</span> TIDY_CALL        <a class="code" href="group__Basic.html#ga28384bf13bf6962c8ef0bcab9b4b7971">tidyGeneralInfo</a>( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00737"></a>00737 <span class="comment"></span>
<a name="l00738"></a>00738 <span class="comment">/** @} end Basic group (again) */</span>
<a name="l00739"></a>00739 
<a name="l00740"></a>00740 <span class="comment"></span>
<a name="l00741"></a>00741 <span class="comment">/** @defgroup Tree Document Tree</span>
<a name="l00742"></a>00742 <span class="comment">**</span>
<a name="l00743"></a>00743 <span class="comment">** A parsed and, optionally, repaired document is</span>
<a name="l00744"></a>00744 <span class="comment">** represented by Tidy as a Tree, much like a W3C DOM.</span>
<a name="l00745"></a>00745 <span class="comment">** This tree may be traversed using these functions.</span>
<a name="l00746"></a>00746 <span class="comment">** The following snippet gives a basic idea how these</span>
<a name="l00747"></a>00747 <span class="comment">** functions can be used.</span>
<a name="l00748"></a>00748 <span class="comment">**</span>
<a name="l00749"></a>00749 <span class="comment">&lt;pre&gt;</span>
<a name="l00750"></a>00750 <span class="comment">void dumpNode( TidyNode tnod, int indent )</span>
<a name="l00751"></a>00751 <span class="comment">{</span>
<a name="l00752"></a>00752 <span class="comment">  TidyNode child;</span>
<a name="l00753"></a>00753 <span class="comment"></span>
<a name="l00754"></a>00754 <span class="comment">  for ( child = tidyGetChild(tnod); child; child = tidyGetNext(child) )</span>
<a name="l00755"></a>00755 <span class="comment">  {</span>
<a name="l00756"></a>00756 <span class="comment">    ctmbstr name;</span>
<a name="l00757"></a>00757 <span class="comment">    switch ( tidyNodeGetType(child) )</span>
<a name="l00758"></a>00758 <span class="comment">    {</span>
<a name="l00759"></a>00759 <span class="comment">    case TidyNode_Root:       name = &quot;Root&quot;;                    break;</span>
<a name="l00760"></a>00760 <span class="comment">    case TidyNode_DocType:    name = &quot;DOCTYPE&quot;;                 break;</span>
<a name="l00761"></a>00761 <span class="comment">    case TidyNode_Comment:    name = &quot;Comment&quot;;                 break;</span>
<a name="l00762"></a>00762 <span class="comment">    case TidyNode_ProcIns:    name = &quot;Processing Instruction&quot;;  break;</span>
<a name="l00763"></a>00763 <span class="comment">    case TidyNode_Text:       name = &quot;Text&quot;;                    break;</span>
<a name="l00764"></a>00764 <span class="comment">    case TidyNode_CDATA:      name = &quot;CDATA&quot;;                   break;</span>
<a name="l00765"></a>00765 <span class="comment">    case TidyNode_Section:    name = &quot;XML Section&quot;;             break;</span>
<a name="l00766"></a>00766 <span class="comment">    case TidyNode_Asp:        name = &quot;ASP&quot;;                     break;</span>
<a name="l00767"></a>00767 <span class="comment">    case TidyNode_Jste:       name = &quot;JSTE&quot;;                    break;</span>
<a name="l00768"></a>00768 <span class="comment">    case TidyNode_Php:        name = &quot;PHP&quot;;                     break;</span>
<a name="l00769"></a>00769 <span class="comment">    case TidyNode_XmlDecl:    name = &quot;XML Declaration&quot;;         break;</span>
<a name="l00770"></a>00770 <span class="comment"></span>
<a name="l00771"></a>00771 <span class="comment">    case TidyNode_Start:</span>
<a name="l00772"></a>00772 <span class="comment">    case TidyNode_End:</span>
<a name="l00773"></a>00773 <span class="comment">    case TidyNode_StartEnd:</span>
<a name="l00774"></a>00774 <span class="comment">    default:</span>
<a name="l00775"></a>00775 <span class="comment">      name = tidyNodeGetName( child );</span>
<a name="l00776"></a>00776 <span class="comment">      break;</span>
<a name="l00777"></a>00777 <span class="comment">    }</span>
<a name="l00778"></a>00778 <span class="comment">    assert( name != NULL );</span>
<a name="l00779"></a>00779 <span class="comment">    printf( &quot;\%*.*sNode: \%s\\n&quot;, indent, indent, &quot; &quot;, name );</span>
<a name="l00780"></a>00780 <span class="comment">    dumpNode( child, indent + 4 );</span>
<a name="l00781"></a>00781 <span class="comment">  }</span>
<a name="l00782"></a>00782 <span class="comment">}</span>
<a name="l00783"></a>00783 <span class="comment"></span>
<a name="l00784"></a>00784 <span class="comment">void dumpDoc( TidyDoc tdoc )</span>
<a name="l00785"></a>00785 <span class="comment">{</span>
<a name="l00786"></a>00786 <span class="comment">  dumpNode( tidyGetRoot(tdoc), 0 );</span>
<a name="l00787"></a>00787 <span class="comment">}</span>
<a name="l00788"></a>00788 <span class="comment"></span>
<a name="l00789"></a>00789 <span class="comment">void dumpBody( TidyDoc tdoc )</span>
<a name="l00790"></a>00790 <span class="comment">{</span>
<a name="l00791"></a>00791 <span class="comment">  dumpNode( tidyGetBody(tdoc), 0 );</span>
<a name="l00792"></a>00792 <span class="comment">}</span>
<a name="l00793"></a>00793 <span class="comment">&lt;/pre&gt;</span>
<a name="l00794"></a>00794 <span class="comment"></span>
<a name="l00795"></a>00795 <span class="comment">@{</span>
<a name="l00796"></a>00796 <span class="comment"></span>
<a name="l00797"></a>00797 <span class="comment">*/</span>
<a name="l00798"></a>00798 
<a name="l00799"></a>00799 TIDY_EXPORT <a class="code" href="structTidyNode.html">TidyNode</a> TIDY_CALL    tidyGetRoot( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00800"></a>00800 TIDY_EXPORT <a class="code" href="structTidyNode.html">TidyNode</a> TIDY_CALL    tidyGetHtml( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00801"></a>00801 TIDY_EXPORT <a class="code" href="structTidyNode.html">TidyNode</a> TIDY_CALL    tidyGetHead( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00802"></a>00802 TIDY_EXPORT <a class="code" href="structTidyNode.html">TidyNode</a> TIDY_CALL    tidyGetBody( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc );
<a name="l00803"></a>00803 
<a name="l00804"></a>00804 <span class="comment">/* parent / child */</span>
<a name="l00805"></a>00805 TIDY_EXPORT <a class="code" href="structTidyNode.html">TidyNode</a> TIDY_CALL    tidyGetParent( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00806"></a>00806 TIDY_EXPORT <a class="code" href="structTidyNode.html">TidyNode</a> TIDY_CALL    tidyGetChild( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00807"></a>00807 
<a name="l00808"></a>00808 <span class="comment">/* siblings */</span>
<a name="l00809"></a>00809 TIDY_EXPORT <a class="code" href="structTidyNode.html">TidyNode</a> TIDY_CALL    tidyGetNext( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00810"></a>00810 TIDY_EXPORT <a class="code" href="structTidyNode.html">TidyNode</a> TIDY_CALL    tidyGetPrev( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00811"></a>00811 
<a name="l00812"></a>00812 <span class="comment">/* Null for non-element nodes and all pure HTML</span>
<a name="l00813"></a>00813 <span class="comment">TIDY_EXPORT ctmbstr     tidyNodeNsLocal( TidyNode tnod );</span>
<a name="l00814"></a>00814 <span class="comment">TIDY_EXPORT ctmbstr     tidyNodeNsPrefix( TidyNode tnod );</span>
<a name="l00815"></a>00815 <span class="comment">TIDY_EXPORT ctmbstr     tidyNodeNsUri( TidyNode tnod );</span>
<a name="l00816"></a>00816 <span class="comment">*/</span>
<a name="l00817"></a>00817 
<a name="l00818"></a>00818 <span class="comment">/* Iterate over attribute values */</span>
<a name="l00819"></a>00819 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL    tidyAttrFirst( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00820"></a>00820 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL    tidyAttrNext( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00821"></a>00821 
<a name="l00822"></a>00822 TIDY_EXPORT ctmbstr TIDY_CALL     tidyAttrName( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00823"></a>00823 TIDY_EXPORT ctmbstr TIDY_CALL     tidyAttrValue( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00824"></a>00824 
<a name="l00825"></a>00825 <span class="comment">/* Null for pure HTML</span>
<a name="l00826"></a>00826 <span class="comment">TIDY_EXPORT ctmbstr     tidyAttrNsLocal( TidyAttr tattr );</span>
<a name="l00827"></a>00827 <span class="comment">TIDY_EXPORT ctmbstr     tidyAttrNsPrefix( TidyAttr tattr );</span>
<a name="l00828"></a>00828 <span class="comment">TIDY_EXPORT ctmbstr     tidyAttrNsUri( TidyAttr tattr );</span>
<a name="l00829"></a>00829 <span class="comment">*/</span>
<a name="l00830"></a>00830 <span class="comment"></span>
<a name="l00831"></a>00831 <span class="comment">/** @} end Tree group */</span>
<a name="l00832"></a>00832 
<a name="l00833"></a>00833 <span class="comment"></span>
<a name="l00834"></a>00834 <span class="comment">/** @defgroup NodeAsk Node Interrogation</span>
<a name="l00835"></a>00835 <span class="comment">**</span>
<a name="l00836"></a>00836 <span class="comment">** Get information about any givent node.</span>
<a name="l00837"></a>00837 <span class="comment">** @{</span>
<a name="l00838"></a>00838 <span class="comment">*/</span>
<a name="l00839"></a>00839 
<a name="l00840"></a>00840 <span class="comment">/* Node info */</span>
<a name="l00841"></a>00841 TIDY_EXPORT TidyNodeType TIDY_CALL tidyNodeGetType( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00842"></a>00842 TIDY_EXPORT ctmbstr TIDY_CALL     tidyNodeGetName( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00843"></a>00843 
<a name="l00844"></a>00844 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsText( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00845"></a>00845 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsProp( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00846"></a>00846 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsHeader( <a class="code" href="structTidyNode.html">TidyNode</a> tnod ); <span class="comment">/* h1, h2, ... */</span>
<a name="l00847"></a>00847 
<a name="l00848"></a>00848 TIDY_EXPORT Bool TIDY_CALL tidyNodeHasText( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00849"></a>00849 TIDY_EXPORT Bool TIDY_CALL tidyNodeGetText( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, <a class="code" href="structTidyNode.html">TidyNode</a> tnod, <a class="code" href="struct__TidyBuffer.html">TidyBuffer</a>* buf );
<a name="l00850"></a>00850 
<a name="l00851"></a>00851 <span class="comment">/* Copy the unescaped value of this node into the given TidyBuffer as UTF-8 */</span>
<a name="l00852"></a>00852 TIDY_EXPORT Bool TIDY_CALL tidyNodeGetValue( <a class="code" href="structTidyDoc.html">TidyDoc</a> tdoc, <a class="code" href="structTidyNode.html">TidyNode</a> tnod, <a class="code" href="struct__TidyBuffer.html">TidyBuffer</a>* buf );
<a name="l00853"></a>00853 
<a name="l00854"></a>00854 TIDY_EXPORT TidyTagId TIDY_CALL tidyNodeGetId( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00855"></a>00855 
<a name="l00856"></a>00856 TIDY_EXPORT uint TIDY_CALL tidyNodeLine( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00857"></a>00857 TIDY_EXPORT uint TIDY_CALL tidyNodeColumn( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00858"></a>00858 <span class="comment"></span>
<a name="l00859"></a>00859 <span class="comment">/** @defgroup NodeIsElementName Deprecated node interrogation per TagId</span>
<a name="l00860"></a>00860 <span class="comment">**</span>
<a name="l00861"></a>00861 <span class="comment">** @deprecated The functions tidyNodeIs{ElementName} are deprecated and </span>
<a name="l00862"></a>00862 <span class="comment">** should be replaced by tidyNodeGetId.</span>
<a name="l00863"></a>00863 <span class="comment">** @{</span>
<a name="l00864"></a>00864 <span class="comment">*/</span>
<a name="l00865"></a>00865 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsHTML( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00866"></a>00866 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsHEAD( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00867"></a>00867 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsTITLE( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00868"></a>00868 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsBASE( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00869"></a>00869 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsMETA( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00870"></a>00870 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsBODY( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00871"></a>00871 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsFRAMESET( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00872"></a>00872 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsFRAME( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00873"></a>00873 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsIFRAME( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00874"></a>00874 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsNOFRAMES( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00875"></a>00875 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsHR( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00876"></a>00876 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsH1( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00877"></a>00877 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsH2( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00878"></a>00878 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsPRE( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00879"></a>00879 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsLISTING( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00880"></a>00880 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsP( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00881"></a>00881 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsUL( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00882"></a>00882 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsOL( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00883"></a>00883 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsDL( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00884"></a>00884 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsDIR( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00885"></a>00885 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsLI( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00886"></a>00886 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsDT( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00887"></a>00887 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsDD( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00888"></a>00888 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsTABLE( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00889"></a>00889 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsCAPTION( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00890"></a>00890 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsTD( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00891"></a>00891 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsTH( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00892"></a>00892 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsTR( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00893"></a>00893 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsCOL( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00894"></a>00894 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsCOLGROUP( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00895"></a>00895 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsBR( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00896"></a>00896 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsA( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00897"></a>00897 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsLINK( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00898"></a>00898 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsB( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00899"></a>00899 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsI( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00900"></a>00900 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsSTRONG( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00901"></a>00901 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsEM( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00902"></a>00902 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsBIG( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00903"></a>00903 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsSMALL( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00904"></a>00904 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsPARAM( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00905"></a>00905 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsOPTION( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00906"></a>00906 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsOPTGROUP( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00907"></a>00907 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsIMG( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00908"></a>00908 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsMAP( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00909"></a>00909 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsAREA( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00910"></a>00910 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsNOBR( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00911"></a>00911 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsWBR( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00912"></a>00912 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsFONT( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00913"></a>00913 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsLAYER( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00914"></a>00914 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsSPACER( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00915"></a>00915 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsCENTER( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00916"></a>00916 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsSTYLE( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00917"></a>00917 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsSCRIPT( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00918"></a>00918 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsNOSCRIPT( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00919"></a>00919 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsFORM( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00920"></a>00920 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsTEXTAREA( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00921"></a>00921 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsBLOCKQUOTE( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00922"></a>00922 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsAPPLET( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00923"></a>00923 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsOBJECT( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00924"></a>00924 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsDIV( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00925"></a>00925 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsSPAN( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00926"></a>00926 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsINPUT( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00927"></a>00927 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsQ( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00928"></a>00928 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsLABEL( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00929"></a>00929 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsH3( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00930"></a>00930 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsH4( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00931"></a>00931 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsH5( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00932"></a>00932 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsH6( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00933"></a>00933 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsADDRESS( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00934"></a>00934 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsXMP( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00935"></a>00935 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsSELECT( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00936"></a>00936 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsBLINK( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00937"></a>00937 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsMARQUEE( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00938"></a>00938 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsEMBED( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00939"></a>00939 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsBASEFONT( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00940"></a>00940 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsISINDEX( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00941"></a>00941 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsS( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00942"></a>00942 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsSTRIKE( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00943"></a>00943 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsU( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00944"></a>00944 TIDY_EXPORT Bool TIDY_CALL tidyNodeIsMENU( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l00945"></a>00945 <span class="comment"></span>
<a name="l00946"></a>00946 <span class="comment">/** @} End NodeIsElementName group */</span>
<a name="l00947"></a>00947 <span class="comment"></span>
<a name="l00948"></a>00948 <span class="comment">/** @} End NodeAsk group */</span>
<a name="l00949"></a>00949 
<a name="l00950"></a>00950 <span class="comment"></span>
<a name="l00951"></a>00951 <span class="comment">/** @defgroup Attribute Attribute Interrogation</span>
<a name="l00952"></a>00952 <span class="comment">**</span>
<a name="l00953"></a>00953 <span class="comment">** Get information about any given attribute.</span>
<a name="l00954"></a>00954 <span class="comment">** @{</span>
<a name="l00955"></a>00955 <span class="comment">*/</span>
<a name="l00956"></a>00956 
<a name="l00957"></a>00957 TIDY_EXPORT TidyAttrId TIDY_CALL tidyAttrGetId( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00958"></a>00958 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsEvent( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00959"></a>00959 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsProp( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00960"></a>00960 <span class="comment"></span>
<a name="l00961"></a>00961 <span class="comment">/** @defgroup AttrIsAttributeName Deprecated attribute interrogation per AttrId</span>
<a name="l00962"></a>00962 <span class="comment">**</span>
<a name="l00963"></a>00963 <span class="comment">** @deprecated The functions  tidyAttrIs{AttributeName} are deprecated and </span>
<a name="l00964"></a>00964 <span class="comment">** should be replaced by tidyAttrGetId.</span>
<a name="l00965"></a>00965 <span class="comment">** @{</span>
<a name="l00966"></a>00966 <span class="comment">*/</span>
<a name="l00967"></a>00967 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsHREF( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00968"></a>00968 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsSRC( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00969"></a>00969 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsID( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00970"></a>00970 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsNAME( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00971"></a>00971 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsSUMMARY( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00972"></a>00972 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsALT( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00973"></a>00973 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsLONGDESC( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00974"></a>00974 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsUSEMAP( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00975"></a>00975 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsISMAP( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00976"></a>00976 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsLANGUAGE( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00977"></a>00977 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsTYPE( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00978"></a>00978 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsVALUE( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00979"></a>00979 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsCONTENT( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00980"></a>00980 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsTITLE( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00981"></a>00981 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsXMLNS( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00982"></a>00982 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsDATAFLD( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00983"></a>00983 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsWIDTH( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00984"></a>00984 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsHEIGHT( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00985"></a>00985 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsFOR( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00986"></a>00986 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsSELECTED( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00987"></a>00987 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsCHECKED( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00988"></a>00988 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsLANG( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00989"></a>00989 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsTARGET( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00990"></a>00990 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsHTTP_EQUIV( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00991"></a>00991 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsREL( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00992"></a>00992 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsOnMOUSEMOVE( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00993"></a>00993 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsOnMOUSEDOWN( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00994"></a>00994 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsOnMOUSEUP( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00995"></a>00995 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsOnCLICK( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00996"></a>00996 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsOnMOUSEOVER( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00997"></a>00997 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsOnMOUSEOUT( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00998"></a>00998 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsOnKEYDOWN( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l00999"></a>00999 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsOnKEYUP( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l01000"></a>01000 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsOnKEYPRESS( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l01001"></a>01001 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsOnFOCUS( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l01002"></a>01002 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsOnBLUR( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l01003"></a>01003 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsBGCOLOR( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l01004"></a>01004 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsLINK( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l01005"></a>01005 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsALINK( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l01006"></a>01006 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsVLINK( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l01007"></a>01007 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsTEXT( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l01008"></a>01008 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsSTYLE( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l01009"></a>01009 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsABBR( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l01010"></a>01010 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsCOLSPAN( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l01011"></a>01011 TIDY_EXPORT Bool TIDY_CALL tidyAttrIsROWSPAN( <a class="code" href="structTidyAttr.html">TidyAttr</a> tattr );
<a name="l01012"></a>01012 <span class="comment"></span>
<a name="l01013"></a>01013 <span class="comment">/** @} End AttrIsAttributeName group */</span>
<a name="l01014"></a>01014 <span class="comment"></span>
<a name="l01015"></a>01015 <span class="comment">/** @} end AttrAsk group */</span>
<a name="l01016"></a>01016 
<a name="l01017"></a>01017 <span class="comment"></span>
<a name="l01018"></a>01018 <span class="comment">/** @defgroup AttrGet Attribute Retrieval</span>
<a name="l01019"></a>01019 <span class="comment">**</span>
<a name="l01020"></a>01020 <span class="comment">** Lookup an attribute from a given node</span>
<a name="l01021"></a>01021 <span class="comment">** @{</span>
<a name="l01022"></a>01022 <span class="comment">*/</span>
<a name="l01023"></a>01023 
<a name="l01024"></a>01024 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetById( <a class="code" href="structTidyNode.html">TidyNode</a> tnod, TidyAttrId attId );
<a name="l01025"></a>01025 <span class="comment"></span>
<a name="l01026"></a>01026 <span class="comment">/** @defgroup AttrGetAttributeName Deprecated attribute retrieval per AttrId</span>
<a name="l01027"></a>01027 <span class="comment">**</span>
<a name="l01028"></a>01028 <span class="comment">** @deprecated The functions tidyAttrGet{AttributeName} are deprecated and </span>
<a name="l01029"></a>01029 <span class="comment">** should be replaced by tidyAttrGetById.</span>
<a name="l01030"></a>01030 <span class="comment">** For instance, tidyAttrGetID( TidyNode tnod ) can be replaced by </span>
<a name="l01031"></a>01031 <span class="comment">** tidyAttrGetById( TidyNode tnod, TidyAttr_ID ). This avoids a potential</span>
<a name="l01032"></a>01032 <span class="comment">** name clash with tidyAttrGetId for case-insensitive languages.</span>
<a name="l01033"></a>01033 <span class="comment">** @{</span>
<a name="l01034"></a>01034 <span class="comment">*/</span>
<a name="l01035"></a>01035 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetHREF( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01036"></a>01036 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetSRC( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01037"></a>01037 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetID( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01038"></a>01038 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetNAME( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01039"></a>01039 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetSUMMARY( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01040"></a>01040 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetALT( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01041"></a>01041 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetLONGDESC( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01042"></a>01042 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetUSEMAP( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01043"></a>01043 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetISMAP( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01044"></a>01044 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetLANGUAGE( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01045"></a>01045 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetTYPE( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01046"></a>01046 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetVALUE( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01047"></a>01047 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetCONTENT( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01048"></a>01048 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetTITLE( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01049"></a>01049 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetXMLNS( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01050"></a>01050 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetDATAFLD( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01051"></a>01051 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetWIDTH( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01052"></a>01052 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetHEIGHT( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01053"></a>01053 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetFOR( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01054"></a>01054 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetSELECTED( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01055"></a>01055 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetCHECKED( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01056"></a>01056 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetLANG( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01057"></a>01057 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetTARGET( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01058"></a>01058 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetHTTP_EQUIV( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01059"></a>01059 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetREL( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01060"></a>01060 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetOnMOUSEMOVE( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01061"></a>01061 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetOnMOUSEDOWN( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01062"></a>01062 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetOnMOUSEUP( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01063"></a>01063 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetOnCLICK( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01064"></a>01064 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetOnMOUSEOVER( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01065"></a>01065 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetOnMOUSEOUT( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01066"></a>01066 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetOnKEYDOWN( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01067"></a>01067 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetOnKEYUP( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01068"></a>01068 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetOnKEYPRESS( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01069"></a>01069 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetOnFOCUS( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01070"></a>01070 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetOnBLUR( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01071"></a>01071 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetBGCOLOR( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01072"></a>01072 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetLINK( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01073"></a>01073 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetALINK( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01074"></a>01074 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetVLINK( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01075"></a>01075 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetTEXT( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01076"></a>01076 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetSTYLE( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01077"></a>01077 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetABBR( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01078"></a>01078 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetCOLSPAN( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01079"></a>01079 TIDY_EXPORT <a class="code" href="structTidyAttr.html">TidyAttr</a> TIDY_CALL tidyAttrGetROWSPAN( <a class="code" href="structTidyNode.html">TidyNode</a> tnod );
<a name="l01080"></a>01080 <span class="comment"></span>
<a name="l01081"></a>01081 <span class="comment">/** @} End AttrGetAttributeName group */</span>
<a name="l01082"></a>01082 <span class="comment"></span>
<a name="l01083"></a>01083 <span class="comment">/** @} end AttrGet group */</span>
<a name="l01084"></a>01084 
<a name="l01085"></a>01085 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l01086"></a>01086 <span class="preprocessor"></span>}  <span class="comment">/* extern &quot;C&quot; */</span>
<a name="l01087"></a>01087 <span class="preprocessor">#endif</span>
<a name="l01088"></a>01088 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __TIDY_H__ */</span>
<a name="l01089"></a>01089 
<a name="l01090"></a>01090 <span class="comment">/*</span>
<a name="l01091"></a>01091 <span class="comment"> * local variables:</span>
<a name="l01092"></a>01092 <span class="comment"> * mode: c</span>
<a name="l01093"></a>01093 <span class="comment"> * indent-tabs-mode: nil</span>
<a name="l01094"></a>01094 <span class="comment"> * c-basic-offset: 4</span>
<a name="l01095"></a>01095 <span class="comment"> * eval: (c-set-offset &apos;substatement-open 0)</span>
<a name="l01096"></a>01096 <span class="comment"> * end:</span>
<a name="l01097"></a>01097 <span class="comment"> */</span>
</pre></div></div>
<hr size="1"/><address style="text-align: right;"><small>Generated on 3 Dec 2009 for HTML Tidy by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>