summaryrefslogtreecommitdiff
path: root/ezxml_8h_source.html
diff options
context:
space:
mode:
Diffstat (limited to 'ezxml_8h_source.html')
-rw-r--r--ezxml_8h_source.html256
1 files changed, 256 insertions, 0 deletions
diff --git a/ezxml_8h_source.html b/ezxml_8h_source.html
new file mode 100644
index 000000000..7f4d74092
--- /dev/null
+++ b/ezxml_8h_source.html
@@ -0,0 +1,256 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>navit: support/ezxml/ezxml.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">navit
+ &#160;<span id="projectnumber">0.5.1-trunk</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('ezxml_8h_source.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">ezxml.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* ezxml.h</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright 2004-2006 Aaron Voisine &lt;aaron@voisine.org&gt;</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * a copy of this software and associated documentation files (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * &quot;Software&quot;), to deal in the Software without restriction, including</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * without limitation the rights to use, copy, modify, merge, publish,</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * distribute, sublicense, and/or sell copies of the Software, and to</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * permit persons to whom the Software is furnished to do so, subject to</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * in all copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#ifndef _EZXML_H</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define _EZXML_H</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;stdarg.h&gt;</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#define EZXML_BUFSIZE 1024 // size of internal memory buffers</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EZXML_NAMEM 0x80 // name is malloced</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EZXML_TXTM 0x40 // txt is malloced</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EZXML_DUP 0x20 // attribute name and value are strduped</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structezxml.html">ezxml</a> *<a class="code" href="structezxml.html">ezxml_t</a>;</div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="structezxml.html"> 43</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structezxml.html">ezxml</a> {</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">char</span> *name; <span class="comment">// tag name</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">char</span> **<a class="code" href="structattr.html">attr</a>; <span class="comment">// tag attributes { name, value, name, value, ... NULL }</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">char</span> *txt; <span class="comment">// tag character content, empty string if none</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">size_t</span> off; <span class="comment">// tag offset from start of parent tag character content</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; ezxml_t next; <span class="comment">// next tag with same name in this section at this depth</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; ezxml_t sibling; <span class="comment">// next tag with different name in same section and depth</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; ezxml_t ordered; <span class="comment">// next tag, same section and depth, in original order</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; ezxml_t child; <span class="comment">// head of sub tag list, NULL if none</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; ezxml_t <a class="code" href="structparent.html">parent</a>; <span class="comment">// parent tag, NULL if current tag is root tag</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">short</span> flags; <span class="comment">// additional information</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;};</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">// Given a string of xml data and its length, parses it and creates an ezxml</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">// structure. For efficiency, modifies the data by adding null terminators</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment">// and decoding ampersand sequences. If you don&#39;t want this, copy the data and</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment">// pass in the copy. Returns NULL on failure.</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;ezxml_t ezxml_parse_str(<span class="keywordtype">char</span> *s, <span class="keywordtype">size_t</span> len);</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment">// A wrapper for ezxml_parse_str() that accepts a file descriptor. First</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment">// attempts to mem map the file. Failing that, reads the file into memory.</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment">// Returns NULL on failure.</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;ezxml_t ezxml_parse_fd(<span class="keywordtype">int</span> fd);</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment">// a wrapper for ezxml_parse_fd() that accepts a file name</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;ezxml_t ezxml_parse_file(<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structfile.html">file</a>);</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment">// Wrapper for ezxml_parse_str() that accepts a file stream. Reads the entire</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">// stream into memory and then parses it. For xml files, use ezxml_parse_file()</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment">// or ezxml_parse_fd()</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;ezxml_t ezxml_parse_fp(FILE *fp);</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment">// returns the first child tag (one level deeper) with the given name or NULL</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment">// if not found</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;ezxml_t ezxml_child(ezxml_t xml, <span class="keyword">const</span> <span class="keywordtype">char</span> *name);</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment">// returns the next tag of the same name in the same section and depth or NULL</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment">// if not found</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor">#define ezxml_next(xml) ((xml) ? xml-&gt;next : NULL)</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment">// Returns the Nth tag with the same name in the same section at the same depth</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment">// or NULL if not found. An index of 0 returns the tag given.</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;ezxml_t ezxml_idx(ezxml_t xml, <span class="keywordtype">int</span> idx);</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment">// returns the name of the given tag</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor">#define ezxml_name(xml) ((xml) ? xml-&gt;name : NULL)</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment">// returns the given tag&#39;s character content or empty string if none</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor">#define ezxml_txt(xml) ((xml) ? xml-&gt;txt : &quot;&quot;)</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment">// returns the value of the requested tag attribute, or NULL if not found</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span> *ezxml_attr(ezxml_t xml, <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structattr.html">attr</a>);</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">// Traverses the ezxml sturcture to retrieve a specific subtag. Takes a</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment">// variable length list of tag names and indexes. The argument list must be</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">// terminated by either an index of -1 or an empty string tag name. Example: </span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment">// title = ezxml_get(library, &quot;shelf&quot;, 0, &quot;book&quot;, 2, &quot;title&quot;, -1);</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment">// This retrieves the title of the 3rd book on the 1st shelf of library.</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment">// Returns NULL if not found.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;ezxml_t ezxml_get(ezxml_t xml, ...);</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment">// Converts an ezxml structure back to xml. Returns a string of xml data that</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment">// must be freed.</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="keywordtype">char</span> *ezxml_toxml(ezxml_t xml);</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment">// returns a NULL terminated array of processing instructions for the given</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment">// target</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span> **ezxml_pi(ezxml_t xml, <span class="keyword">const</span> <span class="keywordtype">char</span> *target);</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment">// frees the memory allocated for an ezxml structure</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keywordtype">void</span> ezxml_free(ezxml_t xml);</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; </div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment">// returns parser error message or empty string if none</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span> *ezxml_error(ezxml_t xml);</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment">// returns a new empty ezxml structure with the given root tag name</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;ezxml_t ezxml_new(<span class="keyword">const</span> <span class="keywordtype">char</span> *name);</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment">// wrapper for ezxml_new() that strdup()s name</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor">#define ezxml_new_d(name) ezxml_set_flag(ezxml_new(strdup(name)), EZXML_NAMEM)</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment">// Adds a child tag. off is the offset of the child tag relative to the start</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment">// of the parent tag&#39;s character content. Returns the child tag.</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;ezxml_t ezxml_add_child(ezxml_t xml, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">size_t</span> off);</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment">// wrapper for ezxml_add_child() that strdup()s name</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="preprocessor">#define ezxml_add_child_d(xml, name, off) \</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="preprocessor"> ezxml_set_flag(ezxml_add_child(xml, strdup(name), off), EZXML_NAMEM)</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment">// sets the character content for the given tag and returns the tag</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;ezxml_t ezxml_set_txt(ezxml_t xml, <span class="keyword">const</span> <span class="keywordtype">char</span> *txt);</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment">// wrapper for ezxml_set_txt() that strdup()s txt</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="preprocessor">#define ezxml_set_txt_d(xml, txt) \</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="preprocessor"> ezxml_set_flag(ezxml_set_txt(xml, strdup(txt)), EZXML_TXTM)</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment">// Sets the given tag attribute or adds a new attribute if not found. A value</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment">// of NULL will remove the specified attribute. Returns the tag given.</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;ezxml_t ezxml_set_attr(ezxml_t xml, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <span class="keywordtype">char</span> *value);</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment">// Wrapper for ezxml_set_attr() that strdup()s name/value. Value cannot be NULL</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="preprocessor">#define ezxml_set_attr_d(xml, name, value) \</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="preprocessor"> ezxml_set_attr(ezxml_set_flag(xml, EZXML_DUP), g_strdup(name), strdup(value))</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment">// sets a flag for the given tag and returns the tag</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;ezxml_t ezxml_set_flag(ezxml_t xml, <span class="keywordtype">short</span> flag);</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment">// removes a tag along with its subtags without freeing its memory</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;ezxml_t ezxml_cut(ezxml_t xml);</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment">// inserts an existing tag into an ezxml structure</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;ezxml_t ezxml_insert(ezxml_t xml, ezxml_t dest, <span class="keywordtype">size_t</span> off);</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment">// Moves an existing tag to become a subtag of dest at the given offset from</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment">// the start of dest&#39;s character content. Returns the moved tag.</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="preprocessor">#define ezxml_move(xml, dest, off) ezxml_insert(ezxml_cut(xml), dest, off)</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment">// removes a tag along with all its subtags</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor">#define ezxml_remove(xml) ezxml_free(ezxml_cut(xml))</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor"></span>}</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="preprocessor">#endif // _EZXML_H</span></div>
+<div class="ttc" id="structezxml_html"><div class="ttname"><a href="structezxml.html">ezxml</a></div><div class="ttdef"><b>Definition:</b> ezxml.h:43</div></div>
+<div class="ttc" id="structparent_html"><div class="ttname"><a href="structparent.html">parent</a></div><div class="ttdef"><b>Definition:</b> gpx2navit_txt.h:51</div></div>
+<div class="ttc" id="structattr_html"><div class="ttname"><a href="structattr.html">attr</a></div><div class="ttdef"><b>Definition:</b> attr.h:156</div></div>
+<div class="ttc" id="structfile_html"><div class="ttname"><a href="structfile.html">file</a></div><div class="ttdef"><b>Definition:</b> file.h:36</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_5815af820a9cc9481f1d0990a0d60286.html">support</a></li><li class="navelem"><a class="el" href="dir_c9489aedb91d793176e12fc4e8412440.html">ezxml</a></li><li class="navelem"><b>ezxml.h</b></li>
+ <li class="footer">Generated by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
+ </ul>
+</div>
+</body>
+</html>