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/doc/reference.html

1545 lines
60 KiB

<!doctype html>
<html>
<head>
<title>Mini-XML API Reference</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="creator" content="Mini-XML v2.11">
<meta name="author" content="Michael R Sweet">
<meta name="copyright" content="Copyright 2003-2017, All Rights Reserved.">
<meta name="version" content="2.11">
<style type="text/css"><!--
body, p, h1, h2, h3, h4 {
font-family: sans-serif;
}
div.body h1 {
font-size: 250%;
font-weight: bold;
margin: 0;
}
div.body h2 {
font-size: 250%;
margin-top: 1.5em;
}
div.body h3 {
font-size: 150%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
div.body h4 {
font-size: 110%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
div.body h5 {
font-size: 100%;
margin-bottom: 0.5em;
margin-top: 1.5em;
}
div.contents {
background: #e8e8e8;
border: solid thin black;
padding: 10px;
}
div.contents h1 {
font-size: 110%;
}
div.contents h2 {
font-size: 100%;
}
div.contents ul.contents {
font-size: 80%;
}
.class {
border-bottom: solid 2px gray;
}
.constants {
}
.description {
margin-top: 0.5em;
}
.discussion {
}
.enumeration {
border-bottom: solid 2px gray;
}
.function {
border-bottom: solid 2px gray;
margin-bottom: 0;
}
.members {
}
.method {
}
.parameters {
}
.returnvalue {
}
.struct {
border-bottom: solid 2px gray;
}
.typedef {
border-bottom: solid 2px gray;
}
.union {
border-bottom: solid 2px gray;
}
.variable {
}
blockquote {
border: solid thin gray;
box-shadow: 3px 3px 5px rgba(0,0,0,0.5);
padding: 0px 10px;
page-break-inside: avoid;
}
p code, li code, p.code, pre, ul.code li {
background: rgba(127,127,127,0.1);
border: thin dotted gray;
font-family: monospace;
font-size: 90%;
hyphens: manual;
-webkit-hyphens: manual;
page-break-inside: avoid;
}
p.code, pre, ul.code li {
padding: 10px;
}
p code, li code {
padding: 2px 5px;
}
a:link, a:visited {
text-decoration: none;
}
span.info {
background: black;
border: solid thin black;
color: white;
font-size: 80%;
font-style: italic;
font-weight: bold;
white-space: nowrap;
}
h3 span.info, h4 span.info {
float: right;
font-size: 100%;
}
ul.code, ul.contents, ul.subcontents {
list-style-type: none;
margin: 0;
padding-left: 0;
}
ul.code li {
margin: 0;
}
ul.contents > li {
margin-top: 1em;
}
ul.contents li ul.code, ul.contents li ul.subcontents {
padding-left: 2em;
}
div.body dl {
margin-top: 0;
}
div.body dt {
font-style: italic;
margin-top: 0;
}
div.body dd {
margin-bottom: 0.5em;
}
h1.title {
}
h2.title {
border-bottom: solid 2px black;
}
h3.title {
border-bottom: solid 2px black;
}
--></style>
</head>
<body>
<h1 align="right"><a name="REFERENCE">Appendix B - Library Reference</a></h1>
<div class="contents">
<h2 class="title">Contents</h2>
<ul class="contents">
<li><a href="#FUNCTIONS">Functions</a><ul class="subcontents">
<li><a href="#mxmlAdd">mxmlAdd</a></li>
<li><a href="#mxmlDelete">mxmlDelete</a></li>
<li><a href="#mxmlElementDeleteAttr">mxmlElementDeleteAttr</a></li>
<li><a href="#mxmlElementGetAttr">mxmlElementGetAttr</a></li>
<li><a href="#mxmlElementGetAttrByIndex">mxmlElementGetAttrByIndex</a></li>
<li><a href="#mxmlElementGetAttrCount">mxmlElementGetAttrCount</a></li>
<li><a href="#mxmlElementSetAttr">mxmlElementSetAttr</a></li>
<li><a href="#mxmlElementSetAttrf">mxmlElementSetAttrf</a></li>
<li><a href="#mxmlEntityAddCallback">mxmlEntityAddCallback</a></li>
<li><a href="#mxmlEntityGetName">mxmlEntityGetName</a></li>
<li><a href="#mxmlEntityGetValue">mxmlEntityGetValue</a></li>
<li><a href="#mxmlEntityRemoveCallback">mxmlEntityRemoveCallback</a></li>
<li><a href="#mxmlFindElement">mxmlFindElement</a></li>
<li><a href="#mxmlFindPath">mxmlFindPath</a></li>
<li><a href="#mxmlGetCDATA">mxmlGetCDATA</a></li>
<li><a href="#mxmlGetCustom">mxmlGetCustom</a></li>
<li><a href="#mxmlGetElement">mxmlGetElement</a></li>
<li><a href="#mxmlGetFirstChild">mxmlGetFirstChild</a></li>
<li><a href="#mxmlGetInteger">mxmlGetInteger</a></li>
<li><a href="#mxmlGetLastChild">mxmlGetLastChild</a></li>
<li><a href="#mxmlGetNextSibling">mxmlGetNextSibling</a></li>
<li><a href="#mxmlGetOpaque">mxmlGetOpaque</a></li>
<li><a href="#mxmlGetParent">mxmlGetParent</a></li>
<li><a href="#mxmlGetPrevSibling">mxmlGetPrevSibling</a></li>
<li><a href="#mxmlGetReal">mxmlGetReal</a></li>
<li><a href="#mxmlGetRefCount">mxmlGetRefCount</a></li>
<li><a href="#mxmlGetText">mxmlGetText</a></li>
<li><a href="#mxmlGetType">mxmlGetType</a></li>
<li><a href="#mxmlGetUserData">mxmlGetUserData</a></li>
<li><a href="#mxmlIndexDelete">mxmlIndexDelete</a></li>
<li><a href="#mxmlIndexEnum">mxmlIndexEnum</a></li>
<li><a href="#mxmlIndexFind">mxmlIndexFind</a></li>
<li><a href="#mxmlIndexGetCount">mxmlIndexGetCount</a></li>
<li><a href="#mxmlIndexNew">mxmlIndexNew</a></li>
<li><a href="#mxmlIndexReset">mxmlIndexReset</a></li>
<li><a href="#mxmlLoadFd">mxmlLoadFd</a></li>
<li><a href="#mxmlLoadFile">mxmlLoadFile</a></li>
<li><a href="#mxmlLoadString">mxmlLoadString</a></li>
<li><a href="#mxmlNewCDATA">mxmlNewCDATA</a></li>
<li><a href="#mxmlNewCustom">mxmlNewCustom</a></li>
<li><a href="#mxmlNewElement">mxmlNewElement</a></li>
<li><a href="#mxmlNewInteger">mxmlNewInteger</a></li>
<li><a href="#mxmlNewOpaque">mxmlNewOpaque</a></li>
<li><a href="#mxmlNewOpaquef">mxmlNewOpaquef</a></li>
<li><a href="#mxmlNewReal">mxmlNewReal</a></li>
<li><a href="#mxmlNewText">mxmlNewText</a></li>
<li><a href="#mxmlNewTextf">mxmlNewTextf</a></li>
<li><a href="#mxmlNewXML">mxmlNewXML</a></li>
<li><a href="#mxmlRelease">mxmlRelease</a></li>
<li><a href="#mxmlRemove">mxmlRemove</a></li>
<li><a href="#mxmlRetain">mxmlRetain</a></li>
<li><a href="#mxmlSAXLoadFd">mxmlSAXLoadFd</a></li>
<li><a href="#mxmlSAXLoadFile">mxmlSAXLoadFile</a></li>
<li><a href="#mxmlSAXLoadString">mxmlSAXLoadString</a></li>
<li><a href="#mxmlSaveAllocString">mxmlSaveAllocString</a></li>
<li><a href="#mxmlSaveFd">mxmlSaveFd</a></li>
<li><a href="#mxmlSaveFile">mxmlSaveFile</a></li>
<li><a href="#mxmlSaveString">mxmlSaveString</a></li>
<li><a href="#mxmlSetCDATA">mxmlSetCDATA</a></li>
<li><a href="#mxmlSetCustom">mxmlSetCustom</a></li>
<li><a href="#mxmlSetCustomHandlers">mxmlSetCustomHandlers</a></li>
<li><a href="#mxmlSetElement">mxmlSetElement</a></li>
<li><a href="#mxmlSetErrorCallback">mxmlSetErrorCallback</a></li>
<li><a href="#mxmlSetInteger">mxmlSetInteger</a></li>
<li><a href="#mxmlSetOpaque">mxmlSetOpaque</a></li>
<li><a href="#mxmlSetOpaquef">mxmlSetOpaquef</a></li>
<li><a href="#mxmlSetReal">mxmlSetReal</a></li>
<li><a href="#mxmlSetText">mxmlSetText</a></li>
<li><a href="#mxmlSetTextf">mxmlSetTextf</a></li>
<li><a href="#mxmlSetUserData">mxmlSetUserData</a></li>
<li><a href="#mxmlSetWrapMargin">mxmlSetWrapMargin</a></li>
<li><a href="#mxmlWalkNext">mxmlWalkNext</a></li>
<li><a href="#mxmlWalkPrev">mxmlWalkPrev</a></li>
</ul></li>
<li><a href="#TYPES">Data Types</a><ul class="subcontents">
<li><a href="#mxml_custom_destroy_cb_t">mxml_custom_destroy_cb_t</a></li>
<li><a href="#mxml_custom_load_cb_t">mxml_custom_load_cb_t</a></li>
<li><a href="#mxml_custom_save_cb_t">mxml_custom_save_cb_t</a></li>
<li><a href="#mxml_entity_cb_t">mxml_entity_cb_t</a></li>
<li><a href="#mxml_error_cb_t">mxml_error_cb_t</a></li>
<li><a href="#mxml_index_t">mxml_index_t</a></li>
<li><a href="#mxml_load_cb_t">mxml_load_cb_t</a></li>
<li><a href="#mxml_node_t">mxml_node_t</a></li>
<li><a href="#mxml_save_cb_t">mxml_save_cb_t</a></li>
<li><a href="#mxml_sax_cb_t">mxml_sax_cb_t</a></li>
<li><a href="#mxml_sax_event_t">mxml_sax_event_t</a></li>
<li><a href="#mxml_type_t">mxml_type_t</a></li>
</ul></li>
<li><a href="#ENUMERATIONS">Enumerations</a><ul class="subcontents">
<li><a href="#mxml_sax_event_e">mxml_sax_event_e</a></li>
<li><a href="#mxml_type_e">mxml_type_e</a></li>
</ul></li>
</ul>
</div>
<div class="body">
<h2 class="title"><a id="FUNCTIONS">Functions</a></h2>
<h3 class="function"><a id="mxmlAdd">mxmlAdd</a></h3>
<p class="description">Add a node to a tree.</p>
<p class="code">
void mxmlAdd (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
&#160;&#160;&#160;&#160;int where,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *child,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>parent</dt>
<dd class="description">Parent node</dd>
<dt>where</dt>
<dd class="description">Where to add, <code>MXML_ADD_BEFORE</code> or <code>MXML_ADD_AFTER</code></dd>
<dt>child</dt>
<dd class="description">Child node for where or <code>MXML_ADD_TO_PARENT</code></dd>
<dt>node</dt>
<dd class="description">Node to add</dd>
</dl>
<h3 class="function"><a id="mxmlDelete">mxmlDelete</a></h3>
<p class="description">Delete a node and all of its children.</p>
<p class="code">
void mxmlDelete (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to delete</dd>
</dl>
<h3 class="function"><span class="info">&#160;Mini-XML 2.4&#160;</span><a id="mxmlElementDeleteAttr">mxmlElementDeleteAttr</a></h3>
<p class="description">Delete an attribute.</p>
<p class="code">
void mxmlElementDeleteAttr (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;const char *name<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Element</dd>
<dt>name</dt>
<dd class="description">Attribute name</dd>
</dl>
<h3 class="function"><a id="mxmlElementGetAttr">mxmlElementGetAttr</a></h3>
<p class="description">Get an attribute.</p>
<p class="code">
const char *mxmlElementGetAttr (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;const char *name<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Element node</dd>
<dt>name</dt>
<dd class="description">Name of attribute</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Attribute value or <code>NULL</code></p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.11&#160;</span><a id="mxmlElementGetAttrByIndex">mxmlElementGetAttrByIndex</a></h3>
<p class="description">Get an element attribute by index.</p>
<p class="code">
const char *mxmlElementGetAttrByIndex (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;int idx,<br>
&#160;&#160;&#160;&#160;const char **name<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node</dd>
<dt>idx</dt>
<dd class="description">Attribute index, starting at 0</dd>
<dt>name</dt>
<dd class="description">Attribute name</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Attribute value</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.11&#160;</span><a id="mxmlElementGetAttrCount">mxmlElementGetAttrCount</a></h3>
<p class="description">Get the number of element attributes.</p>
<p class="code">
int mxmlElementGetAttrCount (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Number of attributes</p>
<h3 class="function"><a id="mxmlElementSetAttr">mxmlElementSetAttr</a></h3>
<p class="description">Set an attribute.</p>
<p class="code">
void mxmlElementSetAttr (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;const char *name,<br>
&#160;&#160;&#160;&#160;const char *value<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Element node</dd>
<dt>name</dt>
<dd class="description">Name of attribute</dd>
<dt>value</dt>
<dd class="description">Attribute value</dd>
</dl>
<h3 class="function"><span class="info">&#160;Mini-XML 2.3&#160;</span><a id="mxmlElementSetAttrf">mxmlElementSetAttrf</a></h3>
<p class="description">Set an attribute with a formatted value.</p>
<p class="code">
void mxmlElementSetAttrf (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;const char *name,<br>
&#160;&#160;&#160;&#160;const char *format,<br>
&#160;&#160;&#160;&#160;...<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Element node</dd>
<dt>name</dt>
<dd class="description">Name of attribute</dd>
<dt>format</dt>
<dd class="description">Printf-style attribute value</dd>
<dt>...</dt>
<dd class="description">Additional arguments as needed</dd>
</dl>
<h3 class="function"><a id="mxmlEntityAddCallback">mxmlEntityAddCallback</a></h3>
<p class="description">Add a callback to convert entities to Unicode.</p>
<p class="code">
int mxmlEntityAddCallback (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_entity_cb_t">mxml_entity_cb_t</a> cb<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>cb</dt>
<dd class="description">Callback function to add</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 on success, -1 on failure</p>
<h3 class="function"><a id="mxmlEntityGetName">mxmlEntityGetName</a></h3>
<p class="description">Get the name that corresponds to the character value.</p>
<p class="code">
const char *mxmlEntityGetName (<br>
&#160;&#160;&#160;&#160;int val<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>val</dt>
<dd class="description">Character value</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Entity name or <code>NULL</code></p>
<h3 class="function"><a id="mxmlEntityGetValue">mxmlEntityGetValue</a></h3>
<p class="description">Get the character corresponding to a named entity.</p>
<p class="code">
int mxmlEntityGetValue (<br>
&#160;&#160;&#160;&#160;const char *name<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>name</dt>
<dd class="description">Entity name</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Character value or -1 on error</p>
<h3 class="function"><a id="mxmlEntityRemoveCallback">mxmlEntityRemoveCallback</a></h3>
<p class="description">Remove a callback.</p>
<p class="code">
void mxmlEntityRemoveCallback (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_entity_cb_t">mxml_entity_cb_t</a> cb<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>cb</dt>
<dd class="description">Callback function to remove</dd>
</dl>
<h3 class="function"><a id="mxmlFindElement">mxmlFindElement</a></h3>
<p class="description">Find the named element.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlFindElement (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *top,<br>
&#160;&#160;&#160;&#160;const char *element,<br>
&#160;&#160;&#160;&#160;const char *attr,<br>
&#160;&#160;&#160;&#160;const char *value,<br>
&#160;&#160;&#160;&#160;int descend<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Current node</dd>
<dt>top</dt>
<dd class="description">Top node</dd>
<dt>element</dt>
<dd class="description">Element name or <code>NULL</code> for any</dd>
<dt>attr</dt>
<dd class="description">Attribute name, or <code>NULL</code> for none</dd>
<dt>value</dt>
<dd class="description">Attribute value, or <code>NULL</code> for any</dd>
<dt>descend</dt>
<dd class="description">Descend into tree - <code>MXML_DESCEND</code>, <code>MXML_NO_DESCEND</code>, or <code>MXML_DESCEND_FIRST</code></dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Element node or <code>NULL</code></p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlFindPath">mxmlFindPath</a></h3>
<p class="description">Find a node with the given path.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlFindPath (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *top,<br>
&#160;&#160;&#160;&#160;const char *path<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>top</dt>
<dd class="description">Top node</dd>
<dt>path</dt>
<dd class="description">Path to element</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Found node or <code>NULL</code></p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlGetCDATA">mxmlGetCDATA</a></h3>
<p class="description">Get the value for a CDATA node.</p>
<p class="code">
const char *mxmlGetCDATA (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to get</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">CDATA value or <code>NULL</code></p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlGetCustom">mxmlGetCustom</a></h3>
<p class="description">Get the value for a custom node.</p>
<p class="code">
const void *mxmlGetCustom (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to get</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Custom value or <code>NULL</code></p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlGetElement">mxmlGetElement</a></h3>
<p class="description">Get the name for an element node.</p>
<p class="code">
const char *mxmlGetElement (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to get</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Element name or <code>NULL</code></p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlGetFirstChild">mxmlGetFirstChild</a></h3>
<p class="description">Get the first child of an element node.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlGetFirstChild (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to get</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">First child or <code>NULL</code></p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlGetInteger">mxmlGetInteger</a></h3>
<p class="description">Get the integer value from the specified node or its
first child.</p>
<p class="code">
int mxmlGetInteger (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to get</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Integer value or 0</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlGetLastChild">mxmlGetLastChild</a></h3>
<p class="description">Get the last child of an element node.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlGetLastChild (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to get</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Last child or <code>NULL</code></p>
<h3 class="function"><a id="mxmlGetNextSibling">mxmlGetNextSibling</a></h3>
<p class="description">Return the node type...</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlGetNextSibling (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to get</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Get the next node for the current parent.</p>
<p class="discussion"><code>NULL</code> is returned if this is the last child for the current parent.
</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlGetOpaque">mxmlGetOpaque</a></h3>
<p class="description">Get an opaque string value for a node or its first child.</p>
<p class="code">
const char *mxmlGetOpaque (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to get</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Opaque string or <code>NULL</code></p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlGetParent">mxmlGetParent</a></h3>
<p class="description">Get the parent node.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlGetParent (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to get</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Parent node or <code>NULL</code></p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlGetPrevSibling">mxmlGetPrevSibling</a></h3>
<p class="description">Get the previous node for the current parent.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlGetPrevSibling (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to get</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Previous node or <code>NULL</code></p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlGetReal">mxmlGetReal</a></h3>
<p class="description">Get the real value for a node or its first child.</p>
<p class="code">
double mxmlGetReal (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to get</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Real value or 0.0</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlGetRefCount">mxmlGetRefCount</a></h3>
<p class="description">Get the current reference (use) count for a node.</p>
<p class="code">
int mxmlGetRefCount (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Reference count</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlGetText">mxmlGetText</a></h3>
<p class="description">Get the text value for a node or its first child.</p>
<p class="code">
const char *mxmlGetText (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;int *whitespace<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to get</dd>
<dt>whitespace</dt>
<dd class="description">1 if string is preceded by whitespace, 0 otherwise</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Text string or <code>NULL</code></p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlGetType">mxmlGetType</a></h3>
<p class="description">Get the node type.</p>
<p class="code">
<a href="#mxml_type_t">mxml_type_t</a> mxmlGetType (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to get</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Type of node</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlGetUserData">mxmlGetUserData</a></h3>
<p class="description">Get the user data pointer for a node.</p>
<p class="code">
void *mxmlGetUserData (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to get</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">User data pointer</p>
<h3 class="function"><a id="mxmlIndexDelete">mxmlIndexDelete</a></h3>
<p class="description">Delete an index.</p>
<p class="code">
void mxmlIndexDelete (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_index_t">mxml_index_t</a> *ind<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>ind</dt>
<dd class="description">Index to delete</dd>
</dl>
<h3 class="function"><a id="mxmlIndexEnum">mxmlIndexEnum</a></h3>
<p class="description">Return the next node in the index.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlIndexEnum (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_index_t">mxml_index_t</a> *ind<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>ind</dt>
<dd class="description">Index to enumerate</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Next node or <code>NULL</code> if there is none</p>
<h3 class="function"><a id="mxmlIndexFind">mxmlIndexFind</a></h3>
<p class="description">Find the next matching node.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlIndexFind (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_index_t">mxml_index_t</a> *ind,<br>
&#160;&#160;&#160;&#160;const char *element,<br>
&#160;&#160;&#160;&#160;const char *value<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>ind</dt>
<dd class="description">Index to search</dd>
<dt>element</dt>
<dd class="description">Element name to find, if any</dd>
<dt>value</dt>
<dd class="description">Attribute value, if any</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Node or <code>NULL</code> if none found</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlIndexGetCount">mxmlIndexGetCount</a></h3>
<p class="description">Get the number of nodes in an index.</p>
<p class="code">
int mxmlIndexGetCount (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_index_t">mxml_index_t</a> *ind<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>ind</dt>
<dd class="description">Index of nodes</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Number of nodes in index</p>
<h3 class="function"><a id="mxmlIndexNew">mxmlIndexNew</a></h3>
<p class="description">Create a new index.</p>
<p class="code">
<a href="#mxml_index_t">mxml_index_t</a> *mxmlIndexNew (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;const char *element,<br>
&#160;&#160;&#160;&#160;const char *attr<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">XML node tree</dd>
<dt>element</dt>
<dd class="description">Element to index or <code>NULL</code> for all</dd>
<dt>attr</dt>
<dd class="description">Attribute to index or <code>NULL</code> for none</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New index</p>
<h3 class="function"><a id="mxmlIndexReset">mxmlIndexReset</a></h3>
<p class="description">Reset the enumeration/find pointer in the index and
return the first node in the index.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlIndexReset (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_index_t">mxml_index_t</a> *ind<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>ind</dt>
<dd class="description">Index to reset</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">First node or <code>NULL</code> if there is none</p>
<h3 class="function"><a id="mxmlLoadFd">mxmlLoadFd</a></h3>
<p class="description">Load a file descriptor into an XML node tree.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlLoadFd (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *top,<br>
&#160;&#160;&#160;&#160;int fd,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_load_cb_t">mxml_load_cb_t</a> cb<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>top</dt>
<dd class="description">Top node</dd>
<dt>fd</dt>
<dd class="description">File descriptor to read from</dd>
<dt>cb</dt>
<dd class="description">Callback function or constant</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">First node or <code>NULL</code> if the file could not be read.</p>
<h3 class="function"><a id="mxmlLoadFile">mxmlLoadFile</a></h3>
<p class="description">Load a file into an XML node tree.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlLoadFile (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *top,<br>
&#160;&#160;&#160;&#160;FILE *fp,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_load_cb_t">mxml_load_cb_t</a> cb<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>top</dt>
<dd class="description">Top node</dd>
<dt>fp</dt>
<dd class="description">File to read from</dd>
<dt>cb</dt>
<dd class="description">Callback function or constant</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">First node or <code>NULL</code> if the file could not be read.</p>
<h3 class="function"><a id="mxmlLoadString">mxmlLoadString</a></h3>
<p class="description">Load a string into an XML node tree.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlLoadString (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *top,<br>
&#160;&#160;&#160;&#160;const char *s,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_load_cb_t">mxml_load_cb_t</a> cb<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>top</dt>
<dd class="description">Top node</dd>
<dt>s</dt>
<dd class="description">String to load</dd>
<dt>cb</dt>
<dd class="description">Callback function or constant</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">First node or <code>NULL</code> if the string has errors.</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.3&#160;</span><a id="mxmlNewCDATA">mxmlNewCDATA</a></h3>
<p class="description">Create a new CDATA node.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewCDATA (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
&#160;&#160;&#160;&#160;const char *data<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>parent</dt>
<dd class="description">Parent node or <code>MXML_NO_PARENT</code></dd>
<dt>data</dt>
<dd class="description">Data string</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New node</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.1&#160;</span><a id="mxmlNewCustom">mxmlNewCustom</a></h3>
<p class="description">Create a new custom data node.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewCustom (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
&#160;&#160;&#160;&#160;void *data,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_custom_destroy_cb_t">mxml_custom_destroy_cb_t</a> destroy<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>parent</dt>
<dd class="description">Parent node or <code>MXML_NO_PARENT</code></dd>
<dt>data</dt>
<dd class="description">Pointer to data</dd>
<dt>destroy</dt>
<dd class="description">Function to destroy data</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New node</p>
<h3 class="function"><a id="mxmlNewElement">mxmlNewElement</a></h3>
<p class="description">Create a new element node.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewElement (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
&#160;&#160;&#160;&#160;const char *name<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>parent</dt>
<dd class="description">Parent node or <code>MXML_NO_PARENT</code></dd>
<dt>name</dt>
<dd class="description">Name of element</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New node</p>
<h3 class="function"><a id="mxmlNewInteger">mxmlNewInteger</a></h3>
<p class="description">Create a new integer node.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewInteger (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
&#160;&#160;&#160;&#160;int integer<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>parent</dt>
<dd class="description">Parent node or <code>MXML_NO_PARENT</code></dd>
<dt>integer</dt>
<dd class="description">Integer value</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New node</p>
<h3 class="function"><a id="mxmlNewOpaque">mxmlNewOpaque</a></h3>
<p class="description">Create a new opaque string.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewOpaque (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
&#160;&#160;&#160;&#160;const char *opaque<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>parent</dt>
<dd class="description">Parent node or <code>MXML_NO_PARENT</code></dd>
<dt>opaque</dt>
<dd class="description">Opaque string</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New node</p>
<h3 class="function"><a id="mxmlNewOpaquef">mxmlNewOpaquef</a></h3>
<p class="description">Create a new formatted opaque string node.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewOpaquef (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
&#160;&#160;&#160;&#160;const char *format,<br>
&#160;&#160;&#160;&#160;...<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>parent</dt>
<dd class="description">Parent node or <code>MXML_NO_PARENT</code></dd>
<dt>format</dt>
<dd class="description">Printf-style format string</dd>
<dt>...</dt>
<dd class="description">Additional args as needed</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New node</p>
<h3 class="function"><a id="mxmlNewReal">mxmlNewReal</a></h3>
<p class="description">Create a new real number node.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewReal (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
&#160;&#160;&#160;&#160;double real<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>parent</dt>
<dd class="description">Parent node or <code>MXML_NO_PARENT</code></dd>
<dt>real</dt>
<dd class="description">Real number value</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New node</p>
<h3 class="function"><a id="mxmlNewText">mxmlNewText</a></h3>
<p class="description">Create a new text fragment node.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewText (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
&#160;&#160;&#160;&#160;int whitespace,<br>
&#160;&#160;&#160;&#160;const char *string<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>parent</dt>
<dd class="description">Parent node or <code>MXML_NO_PARENT</code></dd>
<dt>whitespace</dt>
<dd class="description">1 = leading whitespace, 0 = no whitespace</dd>
<dt>string</dt>
<dd class="description">String</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New node</p>
<h3 class="function"><a id="mxmlNewTextf">mxmlNewTextf</a></h3>
<p class="description">Create a new formatted text fragment node.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewTextf (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
&#160;&#160;&#160;&#160;int whitespace,<br>
&#160;&#160;&#160;&#160;const char *format,<br>
&#160;&#160;&#160;&#160;...<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>parent</dt>
<dd class="description">Parent node or <code>MXML_NO_PARENT</code></dd>
<dt>whitespace</dt>
<dd class="description">1 = leading whitespace, 0 = no whitespace</dd>
<dt>format</dt>
<dd class="description">Printf-style format string</dd>
<dt>...</dt>
<dd class="description">Additional args as needed</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New node</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.3&#160;</span><a id="mxmlNewXML">mxmlNewXML</a></h3>
<p class="description">Create a new XML document tree.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlNewXML (<br>
&#160;&#160;&#160;&#160;const char *version<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>version</dt>
<dd class="description">Version number to use</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New ?xml node</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.3&#160;</span><a id="mxmlRelease">mxmlRelease</a></h3>
<p class="description">Release a node.</p>
<p class="code">
int mxmlRelease (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New reference count</p>
<h3 class="function"><a id="mxmlRemove">mxmlRemove</a></h3>
<p class="description">Remove a node from its parent.</p>
<p class="code">
void mxmlRemove (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to remove</dd>
</dl>
<h3 class="function"><span class="info">&#160;Mini-XML 2.3&#160;</span><a id="mxmlRetain">mxmlRetain</a></h3>
<p class="description">Retain a node.</p>
<p class="code">
int mxmlRetain (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New reference count</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.3&#160;</span><a id="mxmlSAXLoadFd">mxmlSAXLoadFd</a></h3>
<p class="description">Load a file descriptor into an XML node tree
using a SAX callback.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlSAXLoadFd (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *top,<br>
&#160;&#160;&#160;&#160;int fd,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_load_cb_t">mxml_load_cb_t</a> cb,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_sax_cb_t">mxml_sax_cb_t</a> sax_cb,<br>
&#160;&#160;&#160;&#160;void *sax_data<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>top</dt>
<dd class="description">Top node</dd>
<dt>fd</dt>
<dd class="description">File descriptor to read from</dd>
<dt>cb</dt>
<dd class="description">Callback function or constant</dd>
<dt>sax_cb</dt>
<dd class="description">SAX callback or <code>MXML_NO_CALLBACK</code></dd>
<dt>sax_data</dt>
<dd class="description">SAX user data</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">First node or <code>NULL</code> if the file could not be read.</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.3&#160;</span><a id="mxmlSAXLoadFile">mxmlSAXLoadFile</a></h3>
<p class="description">Load a file into an XML node tree
using a SAX callback.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlSAXLoadFile (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *top,<br>
&#160;&#160;&#160;&#160;FILE *fp,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_load_cb_t">mxml_load_cb_t</a> cb,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_sax_cb_t">mxml_sax_cb_t</a> sax_cb,<br>
&#160;&#160;&#160;&#160;void *sax_data<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>top</dt>
<dd class="description">Top node</dd>
<dt>fp</dt>
<dd class="description">File to read from</dd>
<dt>cb</dt>
<dd class="description">Callback function or constant</dd>
<dt>sax_cb</dt>
<dd class="description">SAX callback or <code>MXML_NO_CALLBACK</code></dd>
<dt>sax_data</dt>
<dd class="description">SAX user data</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">First node or <code>NULL</code> if the file could not be read.</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.3&#160;</span><a id="mxmlSAXLoadString">mxmlSAXLoadString</a></h3>
<p class="description">Load a string into an XML node tree
using a SAX callback.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlSAXLoadString (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *top,<br>
&#160;&#160;&#160;&#160;const char *s,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_load_cb_t">mxml_load_cb_t</a> cb,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_sax_cb_t">mxml_sax_cb_t</a> sax_cb,<br>
&#160;&#160;&#160;&#160;void *sax_data<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>top</dt>
<dd class="description">Top node</dd>
<dt>s</dt>
<dd class="description">String to load</dd>
<dt>cb</dt>
<dd class="description">Callback function or constant</dd>
<dt>sax_cb</dt>
<dd class="description">SAX callback or <code>MXML_NO_CALLBACK</code></dd>
<dt>sax_data</dt>
<dd class="description">SAX user data</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">First node or <code>NULL</code> if the string has errors.</p>
<h3 class="function"><a id="mxmlSaveAllocString">mxmlSaveAllocString</a></h3>
<p class="description">Save an XML tree to an allocated string.</p>
<p class="code">
char *mxmlSaveAllocString (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_save_cb_t">mxml_save_cb_t</a> cb<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to write</dd>
<dt>cb</dt>
<dd class="description">Whitespace callback or <code>MXML_NO_CALLBACK</code></dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Allocated string or <code>NULL</code></p>
<h3 class="function"><a id="mxmlSaveFd">mxmlSaveFd</a></h3>
<p class="description">Save an XML tree to a file descriptor.</p>
<p class="code">
int mxmlSaveFd (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;int fd,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_save_cb_t">mxml_save_cb_t</a> cb<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to write</dd>
<dt>fd</dt>
<dd class="description">File descriptor to write to</dd>
<dt>cb</dt>
<dd class="description">Whitespace callback or <code>MXML_NO_CALLBACK</code></dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 on success, -1 on error.</p>
<h3 class="function"><a id="mxmlSaveFile">mxmlSaveFile</a></h3>
<p class="description">Save an XML tree to a file.</p>
<p class="code">
int mxmlSaveFile (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;FILE *fp,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_save_cb_t">mxml_save_cb_t</a> cb<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to write</dd>
<dt>fp</dt>
<dd class="description">File to write to</dd>
<dt>cb</dt>
<dd class="description">Whitespace callback or <code>MXML_NO_CALLBACK</code></dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 on success, -1 on error.</p>
<h3 class="function"><a id="mxmlSaveString">mxmlSaveString</a></h3>
<p class="description">Save an XML node tree to a string.</p>
<p class="code">
int mxmlSaveString (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;char *buffer,<br>
&#160;&#160;&#160;&#160;int bufsize,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_save_cb_t">mxml_save_cb_t</a> cb<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to write</dd>
<dt>buffer</dt>
<dd class="description">String buffer</dd>
<dt>bufsize</dt>
<dd class="description">Size of string buffer</dd>
<dt>cb</dt>
<dd class="description">Whitespace callback or <code>MXML_NO_CALLBACK</code></dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Size of string</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.3&#160;</span><a id="mxmlSetCDATA">mxmlSetCDATA</a></h3>
<p class="description">Set the element name of a CDATA node.</p>
<p class="code">
int mxmlSetCDATA (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;const char *data<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to set</dd>
<dt>data</dt>
<dd class="description">New data string</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 on success, -1 on failure</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.1&#160;</span><a id="mxmlSetCustom">mxmlSetCustom</a></h3>
<p class="description">Set the data and destructor of a custom data node.</p>
<p class="code">
int mxmlSetCustom (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;void *data,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_custom_destroy_cb_t">mxml_custom_destroy_cb_t</a> destroy<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to set</dd>
<dt>data</dt>
<dd class="description">New data pointer</dd>
<dt>destroy</dt>
<dd class="description">New destructor function</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 on success, -1 on failure</p>
<h3 class="function"><a id="mxmlSetCustomHandlers">mxmlSetCustomHandlers</a></h3>
<p class="description">Set the handling functions for custom data.</p>
<p class="code">
void mxmlSetCustomHandlers (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_custom_load_cb_t">mxml_custom_load_cb_t</a> load,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_custom_save_cb_t">mxml_custom_save_cb_t</a> save<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>load</dt>
<dd class="description">Load function</dd>
<dt>save</dt>
<dd class="description">Save function</dd>
</dl>
<h3 class="function"><a id="mxmlSetElement">mxmlSetElement</a></h3>
<p class="description">Set the name of an element node.</p>
<p class="code">
int mxmlSetElement (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;const char *name<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to set</dd>
<dt>name</dt>
<dd class="description">New name string</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 on success, -1 on failure</p>
<h3 class="function"><a id="mxmlSetErrorCallback">mxmlSetErrorCallback</a></h3>
<p class="description">Set the error message callback.</p>
<p class="code">
void mxmlSetErrorCallback (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_error_cb_t">mxml_error_cb_t</a> cb<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>cb</dt>
<dd class="description">Error callback function</dd>
</dl>
<h3 class="function"><a id="mxmlSetInteger">mxmlSetInteger</a></h3>
<p class="description">Set the value of an integer node.</p>
<p class="code">
int mxmlSetInteger (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;int integer<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to set</dd>
<dt>integer</dt>
<dd class="description">Integer value</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 on success, -1 on failure</p>
<h3 class="function"><a id="mxmlSetOpaque">mxmlSetOpaque</a></h3>
<p class="description">Set the value of an opaque node.</p>
<p class="code">
int mxmlSetOpaque (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;const char *opaque<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to set</dd>
<dt>opaque</dt>
<dd class="description">Opaque string</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 on success, -1 on failure</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.11&#160;</span><a id="mxmlSetOpaquef">mxmlSetOpaquef</a></h3>
<p class="description">Set the value of an opaque string node to a formatted string.</p>
<p class="code">
int mxmlSetOpaquef (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;const char *format,<br>
&#160;&#160;&#160;&#160;...<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to set</dd>
<dt>format</dt>
<dd class="description">Printf-style format string</dd>
<dt>...</dt>
<dd class="description">Additional arguments as needed</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 on success, -1 on failure</p>
<h3 class="function"><a id="mxmlSetReal">mxmlSetReal</a></h3>
<p class="description">Set the value of a real number node.</p>
<p class="code">
int mxmlSetReal (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;double real<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to set</dd>
<dt>real</dt>
<dd class="description">Real number value</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 on success, -1 on failure</p>
<h3 class="function"><a id="mxmlSetText">mxmlSetText</a></h3>
<p class="description">Set the value of a text node.</p>
<p class="code">
int mxmlSetText (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;int whitespace,<br>
&#160;&#160;&#160;&#160;const char *string<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to set</dd>
<dt>whitespace</dt>
<dd class="description">1 = leading whitespace, 0 = no whitespace</dd>
<dt>string</dt>
<dd class="description">String</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 on success, -1 on failure</p>
<h3 class="function"><a id="mxmlSetTextf">mxmlSetTextf</a></h3>
<p class="description">Set the value of a text node to a formatted string.</p>
<p class="code">
int mxmlSetTextf (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;int whitespace,<br>
&#160;&#160;&#160;&#160;const char *format,<br>
&#160;&#160;&#160;&#160;...<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to set</dd>
<dt>whitespace</dt>
<dd class="description">1 = leading whitespace, 0 = no whitespace</dd>
<dt>format</dt>
<dd class="description">Printf-style format string</dd>
<dt>...</dt>
<dd class="description">Additional arguments as needed</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 on success, -1 on failure</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.7&#160;</span><a id="mxmlSetUserData">mxmlSetUserData</a></h3>
<p class="description">Set the user data pointer for a node.</p>
<p class="code">
int mxmlSetUserData (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;void *data<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Node to set</dd>
<dt>data</dt>
<dd class="description">User data pointer</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 on success, -1 on failure</p>
<h3 class="function"><span class="info">&#160;Mini-XML 2.3&#160;</span><a id="mxmlSetWrapMargin">mxmlSetWrapMargin</a></h3>
<p class="description">Set the wrap margin when saving XML data.</p>
<p class="code">
void mxmlSetWrapMargin (<br>
&#160;&#160;&#160;&#160;int column<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>column</dt>
<dd class="description">Column for wrapping, 0 to disable wrapping</dd>
</dl>
<h3 class="function"><a id="mxmlWalkNext">mxmlWalkNext</a></h3>
<p class="description">Walk to the next logical node in the tree.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlWalkNext (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *top,<br>
&#160;&#160;&#160;&#160;int descend<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Current node</dd>
<dt>top</dt>
<dd class="description">Top node</dd>
<dt>descend</dt>
<dd class="description">Descend into tree - <code>MXML_DESCEND</code>, <code>MXML_NO_DESCEND</code>, or <code>MXML_DESCEND_FIRST</code></dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Next node or <code>NULL</code></p>
<h3 class="function"><a id="mxmlWalkPrev">mxmlWalkPrev</a></h3>
<p class="description">Walk to the previous logical node in the tree.</p>
<p class="code">
<a href="#mxml_node_t">mxml_node_t</a> *mxmlWalkPrev (<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
&#160;&#160;&#160;&#160;<a href="#mxml_node_t">mxml_node_t</a> *top,<br>
&#160;&#160;&#160;&#160;int descend<br>
);</p>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>node</dt>
<dd class="description">Current node</dd>
<dt>top</dt>
<dd class="description">Top node</dd>
<dt>descend</dt>
<dd class="description">Descend into tree - <code>MXML_DESCEND</code>, <code>MXML_NO_DESCEND</code>, or <code>MXML_DESCEND_FIRST</code></dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Previous node or <code>NULL</code></p>
<h2 class="title"><a id="TYPES">Data Types</a></h2>
<h3 class="typedef"><a id="mxml_custom_destroy_cb_t">mxml_custom_destroy_cb_t</a></h3>
<p class="description">Custom data destructor</p>
<p class="code">
typedef void (*mxml_custom_destroy_cb_t)(void *);
</p>
<h3 class="typedef"><a id="mxml_custom_load_cb_t">mxml_custom_load_cb_t</a></h3>
<p class="description">Custom data load callback function</p>
<p class="code">
typedef int (*mxml_custom_load_cb_t)(<a href="#mxml_node_t">mxml_node_t</a> *, const char *);
</p>
<h3 class="typedef"><a id="mxml_custom_save_cb_t">mxml_custom_save_cb_t</a></h3>
<p class="description">Custom data save callback function</p>
<p class="code">
typedef char *(*mxml_custom_save_cb_t)(<a href="#mxml_node_t">mxml_node_t</a> *);
</p>
<h3 class="typedef"><a id="mxml_entity_cb_t">mxml_entity_cb_t</a></h3>
<p class="description">Entity callback function</p>
<p class="code">
typedef int (*mxml_entity_cb_t)(const char *);
</p>
<h3 class="typedef"><a id="mxml_error_cb_t">mxml_error_cb_t</a></h3>
<p class="description">Error callback function</p>
<p class="code">
typedef void (*mxml_error_cb_t)(const char *);
</p>
<h3 class="typedef"><a id="mxml_index_t">mxml_index_t</a></h3>
<p class="description">An XML node index.</p>
<p class="code">
typedef struct mxml_index_s mxml_index_t;
</p>
<h3 class="typedef"><a id="mxml_load_cb_t">mxml_load_cb_t</a></h3>
<p class="description">Load callback function</p>
<p class="code">
typedef <a href="#mxml_type_t">mxml_type_t</a> (*mxml_load_cb_t)(<a href="#mxml_node_t">mxml_node_t</a> *);
</p>
<h3 class="typedef"><a id="mxml_node_t">mxml_node_t</a></h3>
<p class="description">An XML node.</p>
<p class="code">
typedef struct mxml_node_s mxml_node_t;
</p>
<h3 class="typedef"><a id="mxml_save_cb_t">mxml_save_cb_t</a></h3>
<p class="description">Save callback function</p>
<p class="code">
typedef const char *(*mxml_save_cb_t)(<a href="#mxml_node_t">mxml_node_t</a> *, int);
</p>
<h3 class="typedef"><a id="mxml_sax_cb_t">mxml_sax_cb_t</a></h3>
<p class="description">SAX callback function</p>
<p class="code">
typedef void (*mxml_sax_cb_t)(<a href="#mxml_node_t">mxml_node_t</a> *, mxml_sax_event_t, void *);
</p>
<h3 class="typedef"><a id="mxml_sax_event_t">mxml_sax_event_t</a></h3>
<p class="description">SAX event type.</p>
<p class="code">
typedef enum <a href="#mxml_sax_event_e">mxml_sax_event_e</a> mxml_sax_event_t;
</p>
<h3 class="typedef"><a id="mxml_type_t">mxml_type_t</a></h3>
<p class="description">The XML node type.</p>
<p class="code">
typedef enum <a href="#mxml_type_e">mxml_type_e</a> mxml_type_t;
</p>
<h2 class="title"><a id="ENUMERATIONS">Constants</a></h2>
<h3 class="enumeration"><a id="mxml_sax_event_e">mxml_sax_event_e</a></h3>
<p class="description">SAX event type.</p>
<h4 class="constants">Constants</h4>
<dl>
<dt>MXML_SAX_CDATA </dt>
<dd class="description">CDATA node</dd>
<dt>MXML_SAX_COMMENT </dt>
<dd class="description">Comment node</dd>
<dt>MXML_SAX_DATA </dt>
<dd class="description">Data node</dd>
<dt>MXML_SAX_DIRECTIVE </dt>
<dd class="description">Processing directive node</dd>
<dt>MXML_SAX_ELEMENT_CLOSE </dt>
<dd class="description">Element closed</dd>
<dt>MXML_SAX_ELEMENT_OPEN </dt>
<dd class="description">Element opened</dd>
</dl>
<h3 class="enumeration"><a id="mxml_type_e">mxml_type_e</a></h3>
<p class="description">The XML node type.</p>
<h4 class="constants">Constants</h4>
<dl>
<dt>MXML_CUSTOM <span class="info">&#160;Mini-XML 2.1&#160;</span></dt>
<dd class="description">Custom data </dd>
<dt>MXML_ELEMENT </dt>
<dd class="description">XML element with attributes</dd>
<dt>MXML_IGNORE <span class="info">&#160;Mini-XML 2.3&#160;</span></dt>
<dd class="description">Ignore/throw away node </dd>
<dt>MXML_INTEGER </dt>
<dd class="description">Integer value</dd>
<dt>MXML_OPAQUE </dt>
<dd class="description">Opaque string</dd>
<dt>MXML_REAL </dt>
<dd class="description">Real value</dd>
<dt>MXML_TEXT </dt>
<dd class="description">Text fragment</dd>
</dl>
</div>
</body>
</html>