Fix comment processing.

This commit is contained in:
Michael R Sweet 2005-10-13 12:46:54 +00:00
parent 2fc73455b2
commit 62376c5156
2 changed files with 205 additions and 120 deletions

View File

@ -25,7 +25,7 @@
<li><a href='#mxml_type_e'><tt>mxml_type_e</tt></a></li>
</ul>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_type_e'>mxml_type_e</a></h3>
<h3><a name='mxml_type_e'>mxml_type_e</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>The XML node type.</p>
@ -33,13 +33,13 @@
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><span class='info'>NO</span><tt>MXML_CUSTOM</tt></td><td>Custom data</td></tr>
<tr><td><span class='info'>NO</span><tt>MXML_ELEMENT</tt></td><td>XML element with attributes</td></tr>
<tr><td><span class='info'>NO</span><tt>MXML_IGNORE</tt></td><td>Ignore/throw away node</td></tr>
<tr><td><span class='info'>NO</span><tt>MXML_INTEGER</tt></td><td>Integer value</td></tr>
<tr><td><span class='info'>NO</span><tt>MXML_OPAQUE</tt></td><td>Opaque string</td></tr>
<tr><td><span class='info'>NO</span><tt>MXML_REAL</tt></td><td>Real value</td></tr>
<tr><td><span class='info'>NO</span><tt>MXML_TEXT</tt></td><td>Text fragment</td></tr>
<tr><td><tt>MXML_CUSTOM</tt></td><td>Custom data</td></tr>
<tr><td><tt>MXML_ELEMENT</tt></td><td>XML element with attributes</td></tr>
<tr><td><tt>MXML_IGNORE</tt></td><td>Ignore/throw away node</td></tr>
<tr><td><tt>MXML_INTEGER</tt></td><td>Integer value</td></tr>
<tr><td><tt>MXML_OPAQUE</tt></td><td>Opaque string</td></tr>
<tr><td><tt>MXML_REAL</tt></td><td>Real value</td></tr>
<tr><td><tt>MXML_TEXT</tt></td><td>Text fragment</td></tr>
</tbody></table></p>
<!-- NEW PAGE -->
<h2><a name='_functions'>Functions</a></h2>
@ -88,7 +88,7 @@
<li><a href='#mxmlWalkPrev'><tt>mxmlWalkPrev()</tt></a></li>
</ul>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlAdd'>mxmlAdd()</a></h3>
<h3><a name='mxmlAdd'>mxmlAdd()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Add a node to a tree.
@ -120,7 +120,7 @@ mxmlAdd(
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlDelete'>mxmlDelete()</a></h3>
<h3><a name='mxmlDelete'>mxmlDelete()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Delete a node and all of its children.
@ -142,7 +142,7 @@ mxmlDelete(
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlElementGetAttr'>mxmlElementGetAttr()</a></h3>
<h3><a name='mxmlElementGetAttr'>mxmlElementGetAttr()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Get an attribute.
@ -166,7 +166,7 @@ mxmlElementGetAttr(
<h4>Returns</h4>
<p>Attribute value or NULL</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlElementSetAttr'>mxmlElementSetAttr()</a></h3>
<h3><a name='mxmlElementSetAttr'>mxmlElementSetAttr()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Set an attribute.
@ -194,7 +194,7 @@ mxmlElementSetAttr(
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlEntityAddCallback'>mxmlEntityAddCallback()</a></h3>
<h3><a name='mxmlEntityAddCallback'>mxmlEntityAddCallback()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Add a callback to convert entities to Unicode.</p>
@ -208,7 +208,7 @@ mxmlEntityAddCallback(void);
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlEntityGetName'>mxmlEntityGetName()</a></h3>
<h3><a name='mxmlEntityGetName'>mxmlEntityGetName()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Get the name that corresponds to the character value.
@ -229,7 +229,7 @@ mxmlEntityGetName(
<h4>Returns</h4>
<p>Entity name or NULL</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlEntityGetValue'>mxmlEntityGetValue()</a></h3>
<h3><a name='mxmlEntityGetValue'>mxmlEntityGetValue()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Get the character corresponding to a named entity.
@ -251,7 +251,7 @@ mxmlEntityGetValue(
<h4>Returns</h4>
<p>Character value or -1 on error</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlEntityRemoveCallback'>mxmlEntityRemoveCallback()</a></h3>
<h3><a name='mxmlEntityRemoveCallback'>mxmlEntityRemoveCallback()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Remove a callback.</p>
@ -265,7 +265,7 @@ mxmlEntityRemoveCallback(void);
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlFindElement'>mxmlFindElement()</a></h3>
<h3><a name='mxmlFindElement'>mxmlFindElement()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Find the named element.
@ -303,7 +303,7 @@ mxmlFindElement(
<h4>Returns</h4>
<p>Element node or NULL</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlIndexDelete'>mxmlIndexDelete()</a></h3>
<h3><a name='mxmlIndexDelete'>mxmlIndexDelete()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Delete an index.</p>
@ -322,7 +322,7 @@ mxmlIndexDelete(
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlIndexEnum'>mxmlIndexEnum()</a></h3>
<h3><a name='mxmlIndexEnum'>mxmlIndexEnum()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Return the next node in the index.
@ -343,7 +343,7 @@ mxmlIndexEnum(
<h4>Returns</h4>
<p>Next node or NULL if there is none</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlIndexFind'>mxmlIndexFind()</a></h3>
<h3><a name='mxmlIndexFind'>mxmlIndexFind()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Find the next matching node.
@ -371,7 +371,7 @@ mxmlIndexFind(
<h4>Returns</h4>
<p>Node or NULL if none found</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlIndexNew'>mxmlIndexNew()</a></h3>
<h3><a name='mxmlIndexNew'>mxmlIndexNew()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new index.
@ -400,7 +400,7 @@ mxmlIndexNew(
<h4>Returns</h4>
<p>New index</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlIndexReset'>mxmlIndexReset()</a></h3>
<h3><a name='mxmlIndexReset'>mxmlIndexReset()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Reset the enumeration/find pointer in the index and
@ -423,7 +423,7 @@ mxmlIndexReset(
<h4>Returns</h4>
<p>First node or NULL if there is none</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlLoadFd'>mxmlLoadFd()</a></h3>
<h3><a name='mxmlLoadFd'>mxmlLoadFd()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Load a file descriptor into an XML node tree.
@ -455,7 +455,7 @@ mxmlLoadFd(
<h4>Returns</h4>
<p>First node or NULL if the file could not be read.</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlLoadFile'>mxmlLoadFile()</a></h3>
<h3><a name='mxmlLoadFile'>mxmlLoadFile()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Load a file into an XML node tree.
@ -487,7 +487,7 @@ mxmlLoadFile(
<h4>Returns</h4>
<p>First node or NULL if the file could not be read.</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlLoadString'>mxmlLoadString()</a></h3>
<h3><a name='mxmlLoadString'>mxmlLoadString()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Load a string into an XML node tree.
@ -519,7 +519,7 @@ mxmlLoadString(
<h4>Returns</h4>
<p>First node or NULL if the string has errors.</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlNewCDATA'>mxmlNewCDATA()</a></h3>
<h3><a name='mxmlNewCDATA'>mxmlNewCDATA()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new CDATA node.
@ -545,7 +545,7 @@ mxmlNewCDATA(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlNewCustom'>mxmlNewCustom()</a></h3>
<h3><a name='mxmlNewCustom'>mxmlNewCustom()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new custom data node.
@ -571,7 +571,7 @@ mxmlNewCustom(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlNewElement'>mxmlNewElement()</a></h3>
<h3><a name='mxmlNewElement'>mxmlNewElement()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new element node.
@ -596,7 +596,7 @@ mxmlNewElement(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlNewInteger'>mxmlNewInteger()</a></h3>
<h3><a name='mxmlNewInteger'>mxmlNewInteger()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new integer node.
@ -621,7 +621,7 @@ mxmlNewInteger(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlNewOpaque'>mxmlNewOpaque()</a></h3>
<h3><a name='mxmlNewOpaque'>mxmlNewOpaque()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new opaque string.
@ -647,7 +647,7 @@ mxmlNewOpaque(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlNewReal'>mxmlNewReal()</a></h3>
<h3><a name='mxmlNewReal'>mxmlNewReal()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new real number node.
@ -672,7 +672,7 @@ mxmlNewReal(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlNewText'>mxmlNewText()</a></h3>
<h3><a name='mxmlNewText'>mxmlNewText()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new text fragment node.
@ -701,7 +701,7 @@ mxmlNewText(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlNewTextf'>mxmlNewTextf()</a></h3>
<h3><a name='mxmlNewTextf'>mxmlNewTextf()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Create a new formatted text fragment node.
@ -732,7 +732,7 @@ mxmlNewTextf(
<h4>Returns</h4>
<p>New node</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlRemove'>mxmlRemove()</a></h3>
<h3><a name='mxmlRemove'>mxmlRemove()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Remove a node from its parent.
@ -754,7 +754,7 @@ mxmlRemove(
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlSaveAllocString'>mxmlSaveAllocString()</a></h3>
<h3><a name='mxmlSaveAllocString'>mxmlSaveAllocString()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Save an XML node tree to an allocated string.
@ -785,7 +785,7 @@ mxmlSaveAllocString(
<h4>Returns</h4>
<p>Allocated string or NULL</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlSaveFd'>mxmlSaveFd()</a></h3>
<h3><a name='mxmlSaveFd'>mxmlSaveFd()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Save an XML tree to a file descriptor.
@ -812,7 +812,7 @@ mxmlSaveFd(
<h4>Returns</h4>
<p>0 on success, -1 on error.</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlSaveFile'>mxmlSaveFile()</a></h3>
<h3><a name='mxmlSaveFile'>mxmlSaveFile()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Save an XML tree to a file.
@ -839,7 +839,7 @@ mxmlSaveFile(
<h4>Returns</h4>
<p>0 on success, -1 on error.</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlSaveString'>mxmlSaveString()</a></h3>
<h3><a name='mxmlSaveString'>mxmlSaveString()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Save an XML node tree to a string.
@ -872,7 +872,7 @@ mxmlSaveString(
<h4>Returns</h4>
<p>Size of string</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlSetCDATA'>mxmlSetCDATA()</a></h3>
<h3><a name='mxmlSetCDATA'>mxmlSetCDATA()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the element name of a CDATA node.
@ -895,7 +895,7 @@ mxmlSetCDATA(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlSetCustom'>mxmlSetCustom()</a></h3>
<h3><a name='mxmlSetCustom'>mxmlSetCustom()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the data and destructor of a custom data node.
@ -918,7 +918,7 @@ mxmlSetCustom(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlSetCustomHandlers'>mxmlSetCustomHandlers()</a></h3>
<h3><a name='mxmlSetCustomHandlers'>mxmlSetCustomHandlers()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the handling functions for custom data.
@ -945,7 +945,7 @@ mxmlSetCustomHandlers(
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlSetElement'>mxmlSetElement()</a></h3>
<h3><a name='mxmlSetElement'>mxmlSetElement()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the name of an element node.
@ -968,7 +968,7 @@ mxmlSetElement(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlSetErrorCallback'>mxmlSetErrorCallback()</a></h3>
<h3><a name='mxmlSetErrorCallback'>mxmlSetErrorCallback()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the error message callback.</p>
@ -982,7 +982,7 @@ mxmlSetErrorCallback(void);
<h4>Returns</h4>
<p>Nothing.</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlSetInteger'>mxmlSetInteger()</a></h3>
<h3><a name='mxmlSetInteger'>mxmlSetInteger()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the value of an integer node.
@ -1005,7 +1005,7 @@ mxmlSetInteger(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlSetOpaque'>mxmlSetOpaque()</a></h3>
<h3><a name='mxmlSetOpaque'>mxmlSetOpaque()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the value of an opaque node.
@ -1028,7 +1028,7 @@ mxmlSetOpaque(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlSetReal'>mxmlSetReal()</a></h3>
<h3><a name='mxmlSetReal'>mxmlSetReal()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the value of a real number node.
@ -1051,7 +1051,7 @@ mxmlSetReal(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlSetText'>mxmlSetText()</a></h3>
<h3><a name='mxmlSetText'>mxmlSetText()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the value of a text node.
@ -1076,7 +1076,7 @@ mxmlSetText(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlSetTextf'>mxmlSetTextf()</a></h3>
<h3><a name='mxmlSetTextf'>mxmlSetTextf()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Set the value of a text node to a formatted string.
@ -1103,7 +1103,7 @@ mxmlSetTextf(
<h4>Returns</h4>
<p>0 on success, -1 on failure</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlWalkNext'>mxmlWalkNext()</a></h3>
<h3><a name='mxmlWalkNext'>mxmlWalkNext()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Walk to the next logical node in the tree.
@ -1130,7 +1130,7 @@ mxmlWalkNext(
<h4>Returns</h4>
<p>Next node or NULL</p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxmlWalkPrev'>mxmlWalkPrev()</a></h3>
<h3><a name='mxmlWalkPrev'>mxmlWalkPrev()</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Walk to the previous logical node in the tree.
@ -1167,7 +1167,7 @@ mxmlWalkPrev(
<li><a href='#mxml_value_s'><tt>mxml_value_s</tt></a></li>
</ul>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_attr_s'>mxml_attr_s</a></h3>
<h3><a name='mxml_attr_s'>mxml_attr_s</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML element attribute value.</p>
@ -1183,11 +1183,11 @@ struct mxml_attr_s
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><span class='info'>NO</span><tt>name</tt></td><td>Attribute name</td></tr>
<tr><td><span class='info'>NO</span><tt>value</tt></td><td>Attribute value</td></tr>
<tr><td><tt>name</tt></td><td>Attribute name</td></tr>
<tr><td><tt>value</tt></td><td>Attribute value</td></tr>
</tbody></table></p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_custom_s'>mxml_custom_s</a></h3>
<h3><a name='mxml_custom_s'>mxml_custom_s</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML custom value.</p>
@ -1202,10 +1202,10 @@ struct mxml_custom_s
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><span class='info'>NO</span><tt>data</tt></td><td>Pointer to (allocated) custom data</td></tr>
<tr><td><tt>data</tt></td><td>Pointer to (allocated) custom data</td></tr>
</tbody></table></p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_index_s'>mxml_index_s</a></h3>
<h3><a name='mxml_index_s'>mxml_index_s</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML node index.</p>
@ -1224,14 +1224,14 @@ struct mxml_index_s
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><span class='info'>NO</span><tt>alloc_nodes</tt></td><td>Allocated nodes in index</td></tr>
<tr><td><span class='info'>NO</span><tt>attr</tt></td><td>Attribute used for indexing or NULL</td></tr>
<tr><td><span class='info'>NO</span><tt>cur_node</tt></td><td>Current node</td></tr>
<tr><td><span class='info'>NO</span><tt>nodes</tt></td><td>Node array</td></tr>
<tr><td><span class='info'>NO</span><tt>num_nodes</tt></td><td>Number of nodes in index</td></tr>
<tr><td><tt>alloc_nodes</tt></td><td>Allocated nodes in index</td></tr>
<tr><td><tt>attr</tt></td><td>Attribute used for indexing or NULL</td></tr>
<tr><td><tt>cur_node</tt></td><td>Current node</td></tr>
<tr><td><tt>nodes</tt></td><td>Node array</td></tr>
<tr><td><tt>num_nodes</tt></td><td>Number of nodes in index</td></tr>
</tbody></table></p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_node_s'>mxml_node_s</a></h3>
<h3><a name='mxml_node_s'>mxml_node_s</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML node.</p>
@ -1252,16 +1252,16 @@ struct mxml_node_s
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><span class='info'>NO</span><tt>child</tt></td><td>First child node</td></tr>
<tr><td><span class='info'>NO</span><tt>last_child</tt></td><td>Last child node</td></tr>
<tr><td><span class='info'>NO</span><tt>next</tt></td><td>Next node under same parent</td></tr>
<tr><td><span class='info'>NO</span><tt>parent</tt></td><td>Parent node</td></tr>
<tr><td><span class='info'>NO</span><tt>prev</tt></td><td>Previous node under same parent</td></tr>
<tr><td><span class='info'>NO</span><tt>type</tt></td><td>Node type</td></tr>
<tr><td><span class='info'>NO</span><tt>value</tt></td><td>Node value</td></tr>
<tr><td><tt>child</tt></td><td>First child node</td></tr>
<tr><td><tt>last_child</tt></td><td>Last child node</td></tr>
<tr><td><tt>next</tt></td><td>Next node under same parent</td></tr>
<tr><td><tt>parent</tt></td><td>Parent node</td></tr>
<tr><td><tt>prev</tt></td><td>Previous node under same parent</td></tr>
<tr><td><tt>type</tt></td><td>Node type</td></tr>
<tr><td><tt>value</tt></td><td>Node value</td></tr>
</tbody></table></p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_text_s'>mxml_text_s</a></h3>
<h3><a name='mxml_text_s'>mxml_text_s</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML text value.</p>
@ -1277,11 +1277,11 @@ struct mxml_text_s
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><span class='info'>NO</span><tt>string</tt></td><td>Fragment string</td></tr>
<tr><td><span class='info'>NO</span><tt>whitespace</tt></td><td>Leading whitespace?</td></tr>
<tr><td><tt>string</tt></td><td>Fragment string</td></tr>
<tr><td><tt>whitespace</tt></td><td>Leading whitespace?</td></tr>
</tbody></table></p>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_value_s'>mxml_value_s</a></h3>
<h3><a name='mxml_value_s'>mxml_value_s</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML element value.</p>
@ -1298,9 +1298,9 @@ struct mxml_value_s
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><span class='info'>NO</span><tt>attrs</tt></td><td>Attributes</td></tr>
<tr><td><span class='info'>NO</span><tt>name</tt></td><td>Name of element</td></tr>
<tr><td><span class='info'>NO</span><tt>num_attrs</tt></td><td>Number of attributes</td></tr>
<tr><td><tt>attrs</tt></td><td>Attributes</td></tr>
<tr><td><tt>name</tt></td><td>Name of element</td></tr>
<tr><td><tt>num_attrs</tt></td><td>Number of attributes</td></tr>
</tbody></table></p>
<!-- NEW PAGE -->
<h2><a name='_types'>Types</a></h2>
@ -1316,7 +1316,7 @@ struct mxml_value_s
<li><a href='#mxml_value_t'><tt>mxml_value_t</tt></a></li>
</ul>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_attr_t'>mxml_attr_t</a></h3>
<h3><a name='mxml_attr_t'>mxml_attr_t</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML element attribute value.</p>
@ -1325,7 +1325,7 @@ struct mxml_value_s
typedef struct <a href='#mxml_attr_s'>mxml_attr_s</a> mxml_attr_t;
</pre>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_custom_load_cb_t'>mxml_custom_load_cb_t</a></h3>
<h3><a name='mxml_custom_load_cb_t'>mxml_custom_load_cb_t</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Custom data load callback function</p>
@ -1334,7 +1334,7 @@ typedef struct <a href='#mxml_attr_s'>mxml_attr_s</a> mxml_attr_t;
typedef int (*mxml_custom_load_cb_t)(<a href='#mxml_node_t'>mxml_node_t</a> *, const char *);
</pre>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_custom_save_cb_t'>mxml_custom_save_cb_t</a></h3>
<h3><a name='mxml_custom_save_cb_t'>mxml_custom_save_cb_t</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>Custom data save callback function</p>
@ -1343,7 +1343,7 @@ typedef int (*mxml_custom_load_cb_t)(<a href='#mxml_node_t'>mxml_node_t</a> *, c
typedef char * (*mxml_custom_save_cb_t)(<a href='#mxml_node_t'>mxml_node_t</a> *);
</pre>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_custom_t'>mxml_custom_t</a></h3>
<h3><a name='mxml_custom_t'>mxml_custom_t</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML custom value.</p>
@ -1352,7 +1352,7 @@ typedef char * (*mxml_custom_save_cb_t)(<a href='#mxml_node_t'>mxml_node_t</a> *
typedef struct <a href='#mxml_custom_s'>mxml_custom_s</a> mxml_custom_t;
</pre>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_element_t'>mxml_element_t</a></h3>
<h3><a name='mxml_element_t'>mxml_element_t</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML element value.</p>
@ -1361,7 +1361,7 @@ typedef struct <a href='#mxml_custom_s'>mxml_custom_s</a> mxml_custom_t;
typedef struct <a href='#mxml_value_s'>mxml_value_s</a> mxml_element_t;
</pre>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_index_t'>mxml_index_t</a></h3>
<h3><a name='mxml_index_t'>mxml_index_t</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML node index.</p>
@ -1370,7 +1370,7 @@ typedef struct <a href='#mxml_value_s'>mxml_value_s</a> mxml_element_t;
typedef struct <a href='#mxml_index_s'>mxml_index_s</a> mxml_index_t;
</pre>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_node_t'>mxml_node_t</a></h3>
<h3><a name='mxml_node_t'>mxml_node_t</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML node.</p>
@ -1379,7 +1379,7 @@ typedef struct <a href='#mxml_index_s'>mxml_index_s</a> mxml_index_t;
typedef struct <a href='#mxml_node_s'>mxml_node_s</a> mxml_node_t;
</pre>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_text_t'>mxml_text_t</a></h3>
<h3><a name='mxml_text_t'>mxml_text_t</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML text value.</p>
@ -1388,7 +1388,7 @@ typedef struct <a href='#mxml_node_s'>mxml_node_s</a> mxml_node_t;
typedef struct <a href='#mxml_text_s'>mxml_text_s</a> mxml_text_t;
</pre>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_value_t'>mxml_value_t</a></h3>
<h3><a name='mxml_value_t'>mxml_value_t</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML node value.</p>
@ -1402,7 +1402,7 @@ typedef union <a href='#mxml_value_u'>mxml_value_u</a> mxml_value_t;
<li><a href='#mxml_value_u'><tt>mxml_value_u</tt></a></li>
</ul>
<!-- NEW PAGE -->
<h3><span class='info'>NO</span><a name='mxml_value_u'>mxml_value_u</a></h3>
<h3><a name='mxml_value_u'>mxml_value_u</a></h3>
<hr noshade/>
<h4>Description</h4>
<p>An XML node value.</p>
@ -1422,12 +1422,12 @@ union mxml_value_u
<p class='table'><table align='center' border='1' width='80%'>
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><span class='info'>NO</span><tt>custom</tt></td><td>Custom data</td></tr>
<tr><td><span class='info'>NO</span><tt>element</tt></td><td>Element</td></tr>
<tr><td><span class='info'>NO</span><tt>integer</tt></td><td>Integer number</td></tr>
<tr><td><span class='info'>NO</span><tt>opaque</tt></td><td>Opaque string</td></tr>
<tr><td><span class='info'>NO</span><tt>real</tt></td><td>Real number</td></tr>
<tr><td><span class='info'>NO</span><tt>text</tt></td><td>Text fragment</td></tr>
<tr><td><tt>custom</tt></td><td>Custom data</td></tr>
<tr><td><tt>element</tt></td><td>Element</td></tr>
<tr><td><tt>integer</tt></td><td>Integer number</td></tr>
<tr><td><tt>opaque</tt></td><td>Opaque string</td></tr>
<tr><td><tt>real</tt></td><td>Real number</td></tr>
<tr><td><tt>text</tt></td><td>Text fragment</td></tr>
</tbody></table></p>
</body>
</html>

141
mxmldoc.c
View File

@ -21,6 +21,7 @@
* main() - Main entry for test program.
* add_variable() - Add a variable or argument.
* get_comment_info() - Get info from comment.
* get_text() - Get the text for a node.
* new_documentation() - Create a new documentation tree.
* safe_strcpy() - Copy a string allowing for overlapping strings.
* scan_file() - Scan a source file.
@ -137,6 +138,7 @@
static mxml_node_t *add_variable(mxml_node_t *parent, const char *name,
mxml_node_t *type);
static char *get_comment_info(mxml_node_t *description);
static char *get_text(mxml_node_t *node, char *buffer, int buflen);
static mxml_node_t *new_documentation(mxml_node_t **mxmldoc);
static void safe_strcpy(char *dst, const char *src);
static int scan_file(const char *filename, FILE *fp,
@ -478,29 +480,72 @@ static char * /* O - Info from comment */
get_comment_info(
mxml_node_t *description) /* I - Description node */
{
char text[10240], /* Description text */
since[255], /* @since value */
*ptr; /* Pointer into text */
static char info[1024]; /* Info string */
int infolen; /* Length of info string */
mxml_node_t *current; /* Current text node in description */
if (!description)
return ("<span class='info'>NULL</span>");
return ("");
for (current = description->child; current; current = current->next)
if (!strcmp(current->value.text.string, "@deprecated@"))
get_text(description, text, sizeof(text));
for (ptr = strchr(text, '@'); ptr; ptr = strchr(ptr, '@'))
{
if (!strncmp(ptr, "@deprecated@", 12))
return ("<span class='info'>DEPRECATED</span>");
else if (!strcmp(current->value.text.string, "@since") && current->next)
else if (!strncmp(ptr, "@since ", 7))
{
current = current->next;
snprintf(info, sizeof(info), "<span class='info'>%s",
current->value.text.string);
infolen = strlen(info);
strncpy(info + infolen - 1, "</span>", sizeof(info) - infolen);
info[sizeof(info) - 1] = '\0';
strncpy(since, ptr + 7, sizeof(since) - 1);
since[sizeof(since) - 1] = '\0';
if ((ptr = strchr(since, '@')) != NULL)
*ptr = '\0';
snprintf(info, sizeof(info), "<span class='info'>%s</span>", since);
return (info);
}
}
return ("<span class='info'>NO</span>");
return ("");
}
/*
* 'get_text()' - Get the text for a node.
*/
static char * /* O - Text in node */
get_text(mxml_node_t *node, /* I - Node to get */
char *buffer, /* I - Buffer */
int buflen) /* I - Size of buffer */
{
char *ptr, /* Pointer into buffer */
*end; /* End of buffer */
int len; /* Length of node */
mxml_node_t *current; /* Current node */
ptr = buffer;
end = buffer + buflen - 1;
for (current = node->child; current && ptr < end; current = current->next)
{
if (current->value.text.whitespace)
*ptr++ = ' ';
len = strlen(current->value.text.string);
if (len > (end - ptr))
len = end - ptr;
memcpy(ptr, current->value.text.string, len);
ptr += len;
}
*ptr = '\0';
return (buffer);
}
@ -2004,30 +2049,70 @@ static void
write_description(
mxml_node_t *description) /* I - Description node */
{
mxml_node_t *current; /* Current text node in description */
char text[10240], /* Text for description */
*ptr; /* Pointer into text */
if (!description)
return;
for (current = description->child; current; current = current->next)
if (!strcmp(current->value.text.string, "@deprecated@"))
continue;
else if (!strcmp(current->value.text.string, "@since") && current->next)
get_text(description, text, sizeof(text));
for (ptr = text; *ptr; ptr ++)
{
if (*ptr == '@' && !strncmp(ptr + 1, "deprecated@", 11) &&
!strncmp(ptr + 1, "since ", 6))
{
do
ptr ++;
while (*ptr && *ptr != '@')
ptr ++;
if (!*ptr)
return;
}
else if (*ptr == '&')
fputs("&amp;", stdout);
else if (*ptr == '<')
fputs("&lt;", stdout);
else if (*ptr == '>')
fputs("&gt;", stdout);
else if (*ptr == '\"')
fputs("&quot;", stdout);
else if (*ptr & 128)
{
/*
* Convert UTF-8 to Unicode constant...
*/
int ch; /* Unicode character */
ch = *ptr & 255;
if ((ch & 0xe0) == 0xc0)
{
current = current->next;
ch = ((ch & 0x1f) << 6) | (ptr[1] & 0x3f);
ptr ++;
}
while (current && !strchr(current->value.text.string, '@'));
else if ((ch & 0xf0) == 0xe0)
{
ch = ((((ch * 0x0f) << 6) | (ptr[1] & 0x3f)) << 6) | (ptr[2] & 0x3f);
ptr += 2;
}
if (ch == 0xa0)
{
/*
* Handle non-breaking space as-is...
*/
fputs("&nbsp;", stdout);
}
else
printf("&#x%x;", ch);
}
else
{
if (current->value.text.whitespace)
putchar(' ');
write_string(current->value.text.string);
}
putchar(*ptr);
}
}