You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
mxml/documentation.html

527 lines
15 KiB

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Documentation</title>
<style><!--
h1, h2, h3, p { font-family: sans-serif; text-align: justify; }
tt, pre a:link, pre a:visited, tt a:link, tt a:visited { font-weight: bold; color: #7f0000; }
pre { font-weight: bold; color: #7f0000; margin-left: 2em; }
--></style>
</head>
<body>
<h1>Contents</h1>
<ul>
<li><a href="#_classes">Classes</a></li>
<li><a href="#_enumerations">Enumeration</a></li>
<li><a href="#_functions">Functions</a></li>
<li><a href="#_structures">Structures</a></li>
<li><a href="#_types">Types</a></li>
<li><a href="#_unions">Unions</a></li>
</ul>
<h1><a name="_classes">Classes</a></h1>
<ul>
</ul>
<h1><a name="_enumerations">Enumerations</a></h1>
<ul>
<li><a href="#mxml_type_e"><tt>mxml_type_e</tt></a></li>
</ul>
<hr noshade/>
<h2><a name="mxml_type_e">mxml_type_e</a></h2>
<p>Node Type</p>
<h3>Values</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>MXML_ELEMENT</tt></td><td>XML element with attributes</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>
<h1><a name="_functions">Functions</a></h1>
<ul>
<li><a href="#mxmlAdd"><tt>mxmlAdd()</tt></a></li>
<li><a href="#mxmlDelete"><tt>mxmlDelete()</tt></a></li>
<li><a href="#mxmlElementGetAttr"><tt>mxmlElementGetAttr()</tt></a></li>
<li><a href="#mxmlElementSetAttr"><tt>mxmlElementSetAttr()</tt></a></li>
<li><a href="#mxmlFindElement"><tt>mxmlFindElement()</tt></a></li>
<li><a href="#mxmlLoadFile"><tt>mxmlLoadFile()</tt></a></li>
<li><a href="#mxmlNewElement"><tt>mxmlNewElement()</tt></a></li>
<li><a href="#mxmlNewInteger"><tt>mxmlNewInteger()</tt></a></li>
<li><a href="#mxmlNewOpaque"><tt>mxmlNewOpaque()</tt></a></li>
<li><a href="#mxmlNewReal"><tt>mxmlNewReal()</tt></a></li>
<li><a href="#mxmlNewText"><tt>mxmlNewText()</tt></a></li>
<li><a href="#mxmlRemove"><tt>mxmlRemove()</tt></a></li>
<li><a href="#mxmlSaveFile"><tt>mxmlSaveFile()</tt></a></li>
<li><a href="#mxmlWalkNext"><tt>mxmlWalkNext()</tt></a></li>
<li><a href="#mxmlWalkPrev"><tt>mxmlWalkPrev()</tt></a></li>
</ul>
<hr noshade/>
<h2><a name="mxmlAdd">mxmlAdd()</a></h2>
<p>Add a node to a tree.</p>
<h3>Syntax</h3>
<pre>
void
mxmlAdd(
mxml_node_t * parent,
int where,
mxml_node_t * child,
mxml_node_t * node);
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>parent</tt></td><td>Parent node</td></tr>
<tr><td><tt>where</tt></td><td>Where to add</td></tr>
<tr><td><tt>child</tt></td><td>Child node for where</td></tr>
<tr><td><tt>node</tt></td><td>Node to add</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>Nothing.</p>
<hr noshade/>
<h2><a name="mxmlDelete">mxmlDelete()</a></h2>
<p>Delete a node and all of its children.</p>
<h3>Syntax</h3>
<pre>
void
mxmlDelete(
mxml_node_t * node);
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>node</tt></td><td>Node</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>Nothing.</p>
<hr noshade/>
<h2><a name="mxmlElementGetAttr">mxmlElementGetAttr()</a></h2>
<p>Get an attribute.</p>
<h3>Syntax</h3>
<pre>
const char *
mxmlElementGetAttr(
mxml_node_t * node,
const char * name);
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>node</tt></td><td>Element node</td></tr>
<tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>Attribute value or NULL</p>
<hr noshade/>
<h2><a name="mxmlElementSetAttr">mxmlElementSetAttr()</a></h2>
<p>Set an attribute.</p>
<h3>Syntax</h3>
<pre>
void
mxmlElementSetAttr(
mxml_node_t * node,
const char * name,
const char * value);
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>node</tt></td><td>Element node</td></tr>
<tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
<tr><td><tt>value</tt></td><td>Attribute value</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>Nothing.</p>
<hr noshade/>
<h2><a name="mxmlFindElement">mxmlFindElement()</a></h2>
<p>Find the named element.</p>
<h3>Syntax</h3>
<pre>
mxml_node_t *
mxmlFindElement(
mxml_node_t * node,
mxml_node_t * top,
const char * name,
const char * attr,
const char * value,
int descend);
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>node</tt></td><td>Current node</td></tr>
<tr><td><tt>top</tt></td><td>Top node</td></tr>
<tr><td><tt>name</tt></td><td>Element name or NULL for any</td></tr>
<tr><td><tt>attr</tt></td><td>Attribute name, or NULL for none</td></tr>
<tr><td><tt>value</tt></td><td>Attribute value, or NULL for any</td></tr>
<tr><td><tt>descend</tt></td><td>Descend into tree?</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>Element node or NULL</p>
<hr noshade/>
<h2><a name="mxmlLoadFile">mxmlLoadFile()</a></h2>
<p>Load a file into an XML node tree.</p>
<h3>Syntax</h3>
<pre>
mxml_node_t *
mxmlLoadFile(
mxml_node_t * top,
FILE * fp,
mxml_type_t (*cb)(mxml_node_t *));
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>top</tt></td><td>Top node</td></tr>
<tr><td><tt>fp</tt></td><td>File to read from</td></tr>
<tr><td><tt>(*cb)(mxml_node_t *)</tt></td><td>Callback function</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>First node</p>
<hr noshade/>
<h2><a name="mxmlNewElement">mxmlNewElement()</a></h2>
<p>Create a new element node.</p>
<h3>Syntax</h3>
<pre>
mxml_node_t *
mxmlNewElement(
mxml_node_t * parent,
const char * name);
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>parent</tt></td><td>Parent node</td></tr>
<tr><td><tt>name</tt></td><td>Name of element</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>New node</p>
<hr noshade/>
<h2><a name="mxmlNewInteger">mxmlNewInteger()</a></h2>
<p>Create a new integer node.</p>
<h3>Syntax</h3>
<pre>
mxml_node_t *
mxmlNewInteger(
mxml_node_t * parent,
int integer);
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>parent</tt></td><td>Parent node</td></tr>
<tr><td><tt>integer</tt></td><td>Integer value</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>New node</p>
<hr noshade/>
<h2><a name="mxmlNewOpaque">mxmlNewOpaque()</a></h2>
<p>Create a new opaque string.</p>
<h3>Syntax</h3>
<pre>
mxml_node_t *
mxmlNewOpaque(
mxml_node_t * parent,
const char * opaque);
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>parent</tt></td><td>Parent node</td></tr>
<tr><td><tt>opaque</tt></td><td>Opaque string</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>New node</p>
<hr noshade/>
<h2><a name="mxmlNewReal">mxmlNewReal()</a></h2>
<p>Create a new real number node.</p>
<h3>Syntax</h3>
<pre>
mxml_node_t *
mxmlNewReal(
mxml_node_t * parent,
double real);
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>parent</tt></td><td>Parent node</td></tr>
<tr><td><tt>real</tt></td><td>Real number value</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>New node</p>
<hr noshade/>
<h2><a name="mxmlNewText">mxmlNewText()</a></h2>
<p>Create a new text fragment node.</p>
<h3>Syntax</h3>
<pre>
mxml_node_t *
mxmlNewText(
mxml_node_t * parent,
int whitespace,
const char * string);
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>parent</tt></td><td>Parent node</td></tr>
<tr><td><tt>whitespace</tt></td><td>Leading whitespace?</td></tr>
<tr><td><tt>string</tt></td><td>String</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>New node</p>
<hr noshade/>
<h2><a name="mxmlRemove">mxmlRemove()</a></h2>
<p>Remove a node from its parent.</p>
<h3>Syntax</h3>
<pre>
void
mxmlRemove(
mxml_node_t * node);
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>node</tt></td><td>Node to remove</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>Nothing.</p>
<hr noshade/>
<h2><a name="mxmlSaveFile">mxmlSaveFile()</a></h2>
<p>Save an XML tree to a file.</p>
<h3>Syntax</h3>
<pre>
int
mxmlSaveFile(
mxml_node_t * node,
FILE * fp,
int (*cb)(mxml_node_t *int));
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>node</tt></td><td>Node to write</td></tr>
<tr><td><tt>fp</tt></td><td>File to write to</td></tr>
<tr><td><tt>(*cb)(mxml_node_t *int)</tt></td><td>Whitespace callback</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>0 on success, -1 on error</p>
<hr noshade/>
<h2><a name="mxmlWalkNext">mxmlWalkNext()</a></h2>
<p>Walk to the next logical node in the tree.</p>
<h3>Syntax</h3>
<pre>
mxml_node_t *
mxmlWalkNext(
mxml_node_t * node,
mxml_node_t * top,
int descend);
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>node</tt></td><td>Current node</td></tr>
<tr><td><tt>top</tt></td><td>Top node</td></tr>
<tr><td><tt>descend</tt></td><td>Descend into tree?</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>Next node or NULL</p>
<hr noshade/>
<h2><a name="mxmlWalkPrev">mxmlWalkPrev()</a></h2>
<p>Walk to the previous logical node in the tree.</p>
<h3>Syntax</h3>
<pre>
mxml_node_t *
mxmlWalkPrev(
mxml_node_t * node,
mxml_node_t * top,
int descend);
</pre>
<h3>Arguments</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<tr><td><tt>node</tt></td><td>Current node</td></tr>
<tr><td><tt>top</tt></td><td>Top node</td></tr>
<tr><td><tt>descend</tt></td><td>Descend into tree?</td></tr>
</tbody></table></p>
<h3>Returns</h3>
<p>Previous node or NULL</p>
<h1><a name="_structures">Structures</a></h1>
<ul>
<li><a href="#mxml_attr_s"><tt>mxml_attr_s</tt></a></li>
<li><a href="#mxml_node_s"><tt>mxml_node_s</tt></a></li>
<li><a href="#mxml_text_s"><tt>mxml_text_s</tt></a></li>
<li><a href="#mxml_value_s"><tt>mxml_value_s</tt></a></li>
</ul>
<hr noshade/>
<h2><a name="mxml_attr_s">mxml_attr_s</a></h2>
<p>Attribute Value</p>
<h3>Definition</h3>
<pre>
struct mxml_attr_s
{
char * name;
char * value;
};
</pre>
<h3>Members</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<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>
<hr noshade/>
<h2><a name="mxml_node_s">mxml_node_s</a></h2>
<p>Node</p>
<h3>Definition</h3>
<pre>
struct mxml_node_s
{
mxml_node_t * child;
mxml_node_t * last_child;
mxml_node_t * next;
mxml_node_t * parent;
mxml_node_t * prev;
mxml_type_t type;
mxml_value_t value;
};
</pre>
<h3>Members</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<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>
<hr noshade/>
<h2><a name="mxml_text_s">mxml_text_s</a></h2>
<p>Text Value</p>
<h3>Definition</h3>
<pre>
struct mxml_text_s
{
char * string;
int whitespace;
};
</pre>
<h3>Members</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<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>
<hr noshade/>
<h2><a name="mxml_value_s">mxml_value_s</a></h2>
<p>Element Value</p>
<h3>Definition</h3>
<pre>
struct mxml_value_s
{
mxml_attr_t * attrs;
char * name;
int num_attrs;
};
</pre>
<h3>Members</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<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>
<h1><a name="_types">Types</a></h1>
<ul>
<li><a href="#mxml_attr_t"><tt>mxml_attr_t</tt></a></li>
<li><a href="#mxml_element_t"><tt>mxml_element_t</tt></a></li>
<li><a href="#mxml_text_t"><tt>mxml_text_t</tt></a></li>
<li><a href="#mxml_type_t"><tt>mxml_type_t</tt></a></li>
<li><a href="#mxml_value_t"><tt>mxml_value_t</tt></a></li>
</ul>
<hr noshade/>
<h2><a name="mxml_attr_t">mxml_attr_t</a></h2>
<p>Attribute Value</p>
<h3>Definition</h3>
<pre>
typedef struct mxml_attr_s mxml_attr_t;
</pre>
<hr noshade/>
<h2><a name="mxml_element_t">mxml_element_t</a></h2>
<p>Element Value</p>
<h3>Definition</h3>
<pre>
typedef struct mxml_value_s mxml_element_t;
</pre>
<hr noshade/>
<h2><a name="mxml_text_t">mxml_text_t</a></h2>
<p>Text Value</p>
<h3>Definition</h3>
<pre>
typedef struct mxml_text_s mxml_text_t;
</pre>
<hr noshade/>
<h2><a name="mxml_type_t">mxml_type_t</a></h2>
<p>Node Type</p>
<h3>Definition</h3>
<pre>
typedef enum mxml_type_e mxml_type_t;
</pre>
<hr noshade/>
<h2><a name="mxml_value_t">mxml_value_t</a></h2>
<p>Node Value</p>
<h3>Definition</h3>
<pre>
typedef union mxml_value_u mxml_value_t;
</pre>
<h1><a name="_unions">Unions</a></h1>
<ul>
<li><a href="#mxml_value_u"><tt>mxml_value_u</tt></a></li>
</ul>
<hr noshade/>
<h2><a name="mxml_value_u">mxml_value_u</a></h2>
<p>Node Value</p>
<h3>Definition</h3>
<pre>
struct mxml_value_u
{
mxml_element_t element;
int integer;
char * opaque;
double real;
mxml_text_t text;
};
</pre>
<h3>Members</h3>
<p class="table"><table align="center" border="1" width="80%">
<thead><tr><th>Name</th><th>Description</th></tr></thead>
<tbody>
<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>