diff options
Diffstat (limited to 'zenxml')
67 files changed, 0 insertions, 12283 deletions
diff --git a/zenxml/doc/annotated.html b/zenxml/doc/annotated.html deleted file mode 100644 index c11dd07e..00000000 --- a/zenxml/doc/annotated.html +++ /dev/null @@ -1,110 +0,0 @@ -<!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>zen::Xml: Class List</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li class="current"><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="header"> - <div class="headertitle"> -<div class="title">Class List</div> </div> -</div><!--header--> -<div class="contents"> -<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory"> -<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory"> -<tr id="row_0_" class="even"><td class="entry"><img id="arr_0_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespacezen.html" target="_self">zen</a></td><td class="desc">The zen::Xml namespace </td></tr> -<tr id="row_0_0_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classzen_1_1_xml_out.html" target="_self">XmlOut</a></td><td class="desc">Proxy class to conveniently convert user data into XML structure </td></tr> -<tr id="row_0_1_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classzen_1_1_xml_in.html" target="_self">XmlIn</a></td><td class="desc">Proxy class to conveniently convert XML structure to user data </td></tr> -<tr id="row_0_2_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classzen_1_1_xml_element.html" target="_self">XmlElement</a></td><td class="desc">An XML element </td></tr> -<tr id="row_0_3_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classzen_1_1_xml_doc.html" target="_self">XmlDoc</a></td><td class="desc">The complete XML document </td></tr> -<tr id="row_0_4_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structzen_1_1_xml_error.html" target="_self">XmlError</a></td><td class="desc">Exception base class for zen::Xml </td></tr> -<tr id="row_0_5_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structzen_1_1_xml_file_error.html" target="_self">XmlFileError</a></td><td class="desc">Exception thrown due to failed file I/O </td></tr> -<tr id="row_0_6_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structzen_1_1_xml_parsing_error.html" target="_self">XmlParsingError</a></td><td class="desc">Exception thrown due to an XML parsing error </td></tr> -</table> -</div><!-- directory --> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/bc_s.png b/zenxml/doc/bc_s.png Binary files differdeleted file mode 100644 index 224b29aa..00000000 --- a/zenxml/doc/bc_s.png +++ /dev/null diff --git a/zenxml/doc/bdwn.png b/zenxml/doc/bdwn.png Binary files differdeleted file mode 100644 index 940a0b95..00000000 --- a/zenxml/doc/bdwn.png +++ /dev/null diff --git a/zenxml/doc/bind_8h_source.html b/zenxml/doc/bind_8h_source.html deleted file mode 100644 index e8e9e831..00000000 --- a/zenxml/doc/bind_8h_source.html +++ /dev/null @@ -1,335 +0,0 @@ -<!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>zen::Xml: bind.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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_5fe60cdff4f93e8435d81ae38a3e2e18.html">zenxml</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">bind.h</div> </div> -</div><!--header--> -<div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// * This file is part of the FreeFileSync project. It is distributed under *</span></div> -<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *</span></div> -<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved *</span></div> -<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div> -<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#ifndef ZEN_XML_BIND_HEADER_9081740816593478258435</span></div> -<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor"></span><span class="preprocessor">#define ZEN_XML_BIND_HEADER_9081740816593478258435</span></div> -<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor"></span></div> -<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <set></span></div> -<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "cvrt_struc.h"</span></div> -<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "parser.h"</span></div> -<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "io.h"</span></div> -<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div> -<div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="namespacezen.html"> 15</a></span> <span class="keyword">namespace </span>zen</div> -<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> {</div> -<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div> -<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">template</span> <<span class="keyword">class</span> String> <span class="keyword">inline</span></div> -<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="namespacezen.html#a872a48c0616e7f12ae8caca464835e00"> 33</a></span> <a class="code" href="classzen_1_1_xml_doc.html">XmlDoc</a> <a class="code" href="namespacezen.html#a872a48c0616e7f12ae8caca464835e00">load</a>(<span class="keyword">const</span> String& filename) <span class="comment">//throw XmlFileError, XmlParsingError</span></div> -<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div> -<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  std::string stream = <a class="code" href="namespacezen.html#a04fe23c3bd9b7d03309620b5ea763607">loadStream</a>(filename); <span class="comment">//throw XmlFileError</span></div> -<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">return</span> <a class="code" href="namespacezen.html#a1ae1a4688d724b554fe3bf4638700477">parse</a>(stream); <span class="comment">//throw XmlParsingError</span></div> -<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div> -<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div> -<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div> -<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div> -<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">template</span> <<span class="keyword">class</span> String> <span class="keyword">inline</span></div> -<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespacezen.html#adeeb6b2318097382ae47aa939fc15d4d"> 52</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacezen.html#adeeb6b2318097382ae47aa939fc15d4d">save</a>(<span class="keyword">const</span> <a class="code" href="classzen_1_1_xml_doc.html">XmlDoc</a>& doc,</div> -<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">const</span> String& filename,</div> -<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">const</span> std::string& lineBreak = <span class="stringliteral">"\r\n"</span>,</div> -<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">const</span> std::string& indent = <span class="stringliteral">" "</span>) <span class="comment">//throw XmlFileError</span></div> -<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> {</div> -<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  std::string stream = <a class="code" href="namespacezen.html#afaa4920e275078e6c8009fbdf58b57ee">serialize</a>(doc, lineBreak, indent); <span class="comment">//throw ()</span></div> -<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="namespacezen.html#a4ba7bbaa14a787b07fc13da9145aabe2">saveStream</a>(stream, filename); <span class="comment">//throw XmlFileError</span></div> -<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div> -<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div> -<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div> -<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_out.html"> 63</a></span> <span class="keyword">class </span><a class="code" href="classzen_1_1_xml_out.html">XmlOut</a></div> -<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> {</div> -<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">public</span>:</div> -<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div> -<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_out.html#ad8b1ccb8f3d4e7b0ab2598597ea50bcc"> 88</a></span>  <a class="code" href="classzen_1_1_xml_out.html#ad8b1ccb8f3d4e7b0ab2598597ea50bcc">XmlOut</a>(<a class="code" href="classzen_1_1_xml_doc.html">XmlDoc</a>& doc) : ref_(&doc.root()) {}</div> -<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div> -<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_out.html#aa80be3a56f70a58d2730a763166088c0"> 93</a></span>  <a class="code" href="classzen_1_1_xml_out.html#aa80be3a56f70a58d2730a763166088c0">XmlOut</a>(<a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>& element) : ref_(&element) {}</div> -<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div> -<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div> -<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_out.html#a00f883d3f9d60535b06b5ae609dc8831"> 102</a></span>  <a class="code" href="classzen_1_1_xml_out.html">XmlOut</a> <a class="code" href="classzen_1_1_xml_out.html#a00f883d3f9d60535b06b5ae609dc8831">operator[]</a>(<span class="keyword">const</span> String& name)<span class="keyword"> const</span></div> -<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">const</span> std::string utf8name = utfCvrtTo<std::string>(name);</div> -<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>* child = ref_-><a class="code" href="classzen_1_1_xml_element.html#a3ab82b1720460487f4afabcd115d0c7e">getChild</a>(utf8name);</div> -<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> child ? *child : ref_-><a class="code" href="classzen_1_1_xml_element.html#a653caffa6fad89db7d14f67f987ad0f9">addChild</a>(utf8name);</div> -<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div> -<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div> -<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div> -<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">template</span> <<span class="keyword">class</span> T></div> -<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_out.html#a09ca9144515e3c109b36062b0475c8eb"> 115</a></span>  <span class="keywordtype">void</span> <a class="code" href="classzen_1_1_xml_out.html#a09ca9144515e3c109b36062b0475c8eb">operator()</a>(<span class="keyword">const</span> T& value) { <a class="code" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">writeStruc</a>(value, *ref_); }</div> -<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div> -<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div> -<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String, <span class="keyword">class</span> T></div> -<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_out.html#acaf9b71fe1d907dd63dd4b91e2e03805"> 143</a></span>  <span class="keywordtype">void</span> <a class="code" href="classzen_1_1_xml_out.html#acaf9b71fe1d907dd63dd4b91e2e03805">attribute</a>(<span class="keyword">const</span> String& name, <span class="keyword">const</span> T& value) { ref_-><a class="code" href="classzen_1_1_xml_element.html#a211a6f037c22a54d3facb7a8347a8421">setAttribute</a>(name, value); }</div> -<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div> -<div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_out.html#aec117344e8a534382e8d5e76711f97b2"> 146</a></span>  <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>& <a class="code" href="classzen_1_1_xml_out.html#aec117344e8a534382e8d5e76711f97b2">ref</a>() { <span class="keywordflow">return</span> *ref_; }</div> -<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div> -<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="keyword">private</span>:</div> -<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>* ref_; <span class="comment">//always bound!</span></div> -<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> };</div> -<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div> -<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div> -<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_in.html"> 154</a></span> <span class="keyword">class </span><a class="code" href="classzen_1_1_xml_in.html">XmlIn</a></div> -<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> {</div> -<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keyword">class </span>ErrorLog;</div> -<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">struct </span>ConversionToBool { <span class="keywordtype">int</span> dummy; };</div> -<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div> -<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="keyword">public</span>:</div> -<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div> -<div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_in.html#a5b48c9848e6c631a04cec2477ff85c0f"> 171</a></span>  <a class="code" href="classzen_1_1_xml_in.html#a5b48c9848e6c631a04cec2477ff85c0f">XmlIn</a>(<span class="keyword">const</span> <a class="code" href="classzen_1_1_xml_doc.html">XmlDoc</a>& doc) : refIndex(0), log(std::make_shared<ErrorLog>()) { refList.push_back(&doc.<a class="code" href="classzen_1_1_xml_doc.html#ad4a9594d93885fc1a12db28e8246648d">root</a>()); }</div> -<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div> -<div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_in.html#ae072660cde71fd4695c04d074098b430"> 176</a></span>  <a class="code" href="classzen_1_1_xml_in.html#ae072660cde71fd4695c04d074098b430">XmlIn</a>(<span class="keyword">const</span> <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>* element) : refIndex(0), log(std::make_shared<ErrorLog>()) { refList.push_back(element); }</div> -<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div> -<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_in.html#a33de75412df69cb25e0fd8b3bc70c9f8"> 181</a></span>  <a class="code" href="classzen_1_1_xml_in.html#a33de75412df69cb25e0fd8b3bc70c9f8">XmlIn</a>(<span class="keyword">const</span> <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>& element) : refIndex(0), log(std::make_shared<ErrorLog>()) { refList.push_back(&element); }</div> -<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div> -<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div> -<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_in.html#a9b38167835a28eac9a2297f35f51e53d"> 190</a></span>  <a class="code" href="classzen_1_1_xml_in.html">XmlIn</a> <a class="code" href="classzen_1_1_xml_in.html#a9b38167835a28eac9a2297f35f51e53d">operator[]</a>(<span class="keyword">const</span> String& name)<span class="keyword"> const</span></div> -<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  std::vector<const XmlElement*> childList;</div> -<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div> -<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span> (refIndex < refList.size())</div> -<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div> -<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keyword">auto</span> iterPair = refList[refIndex]->getChildren(name);</div> -<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  std::for_each(iterPair.first, iterPair.second,</div> -<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  [&](<span class="keyword">const</span> <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>& child) { childList.push_back(&child); });</div> -<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div> -<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div> -<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">return</span> <a class="code" href="classzen_1_1_xml_in.html#a5b48c9848e6c631a04cec2477ff85c0f">XmlIn</a>(childList, childList.empty() ? getChildNameFormatted(name) : std::string(), log);</div> -<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div> -<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div> -<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div> -<div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_in.html#a60cf2678c989621545d27745dcafa4a4"> 225</a></span>  <span class="keywordtype">void</span> <a class="code" href="classzen_1_1_xml_in.html#a60cf2678c989621545d27745dcafa4a4">next</a>() { ++refIndex; }</div> -<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div> -<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div> -<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keyword">template</span> <<span class="keyword">class</span> T></div> -<div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_in.html#a98cc59f687c89549381e76105f8fb506"> 234</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classzen_1_1_xml_in.html#a98cc59f687c89549381e76105f8fb506">operator()</a>(T& value)<span class="keyword"> const</span></div> -<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span> (refIndex < refList.size())</div> -<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div> -<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordtype">bool</span> success = <a class="code" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">readStruc</a>(*refList[refIndex], value);</div> -<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">if</span> (!success)</div> -<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  log->notifyConversionError(getNameFormatted());</div> -<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> success;</div> -<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div> -<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">else</span></div> -<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  {</div> -<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  log->notifyMissingElement(getNameFormatted());</div> -<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> -<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div> -<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  }</div> -<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div> -<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div> -<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String, <span class="keyword">class</span> T></div> -<div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_in.html#a971cd7054c551c4460d5220f6ec5cf01"> 269</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classzen_1_1_xml_in.html#a971cd7054c551c4460d5220f6ec5cf01">attribute</a>(<span class="keyword">const</span> String& name, T& value)<span class="keyword"> const</span></div> -<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">if</span> (refIndex < refList.size())</div> -<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  {</div> -<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordtype">bool</span> success = refList[refIndex]->getAttribute(name, value);</div> -<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span> (!success)</div> -<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  log->notifyMissingAttribute(getNameFormatted(), utfCvrtTo<std::string>(name));</div> -<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">return</span> success;</div> -<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div> -<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">else</span></div> -<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  {</div> -<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  log->notifyMissingElement(getNameFormatted());</div> -<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> -<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div> -<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div> -<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div> -<div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_in.html#a647b468b7c6c95b25f2e43627184177f"> 286</a></span>  <span class="keyword">const</span> <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>* <span class="keyword">get</span>() <span class="keyword">const</span> { <span class="keywordflow">return</span> refIndex < refList.size() ? refList[refIndex] : <span class="keyword">nullptr</span>; }</div> -<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div> -<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div> -<div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_in.html#a954950849b52557369932ab2a8b4ad72"> 298</a></span>  <span class="keyword">operator</span> <span class="keywordtype">int</span> ConversionToBool::* () <span class="keyword">const</span> { <span class="keywordflow">return</span> <span class="keyword">get</span>() ? &ConversionToBool::dummy : <span class="keyword">nullptr</span>; }</div> -<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div> -<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div> -<div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_in.html#a33b5dd504d3165aa3f923f6b33e9991a"> 320</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classzen_1_1_xml_in.html#a33b5dd504d3165aa3f923f6b33e9991a">errorsOccured</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !log->elementList().empty(); }</div> -<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div> -<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div> -<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_in.html#a84bb497d3b3fc753d054e52c4823c05e"> 328</a></span>  std::vector<String> <a class="code" href="classzen_1_1_xml_in.html#a84bb497d3b3fc753d054e52c4823c05e">getErrorsAs</a>()<span class="keyword"> const</span></div> -<div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  std::vector<String> output;</div> -<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& elements = log->elementList();</div> -<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  std::transform(elements.begin(), elements.end(), std::back_inserter(output), [](<span class="keyword">const</span> std::string& str) { <span class="keywordflow">return</span> utfCvrtTo<String>(str); });</div> -<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">return</span> output;</div> -<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div> -<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div> -<div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="keyword">private</span>:</div> -<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="classzen_1_1_xml_in.html">XmlIn</a>(<span class="keyword">const</span> std::vector<const XmlElement*>& siblingList, <span class="keyword">const</span> std::string& elementNameFmt, <span class="keyword">const</span> std::shared_ptr<ErrorLog>& sharedlog) :</div> -<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  refList(siblingList), refIndex(0), formattedName(elementNameFmt), log(sharedlog)</div> -<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  { assert((!siblingList.empty() && elementNameFmt.empty()) || (siblingList.empty() && !elementNameFmt.empty())); }</div> -<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div> -<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keyword">static</span> std::string getNameFormatted(<span class="keyword">const</span> XmlElement& elem) <span class="comment">//"<Root> <Level1> <Level2>"</span></div> -<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  {</div> -<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">return</span> (elem.parent() ? getNameFormatted(*elem.parent()) + <span class="stringliteral">" "</span> : std::string()) + <span class="stringliteral">"<"</span> + elem.getNameAs<std::string>() + <span class="stringliteral">">"</span>;</div> -<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  }</div> -<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div> -<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  std::string getNameFormatted()<span class="keyword"> const</span></div> -<div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">if</span> (refIndex < refList.size())</div> -<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  {</div> -<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  assert(formattedName.empty());</div> -<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">return</span> getNameFormatted(*refList[refIndex]);</div> -<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div> -<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">else</span></div> -<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">return</span> formattedName;</div> -<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  }</div> -<div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div> -<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  std::string getChildNameFormatted(<span class="keyword">const</span> std::string& childName)<span class="keyword"> const</span></div> -<div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  std::string parentName = getNameFormatted();</div> -<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">return</span> (parentName.empty() ? std::string() : (parentName + <span class="stringliteral">" "</span>)) + <span class="stringliteral">"<"</span> + childName + <span class="stringliteral">">"</span>;</div> -<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  }</div> -<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div> -<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keyword">class </span>ErrorLog</div> -<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  {</div> -<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keyword">public</span>:</div> -<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordtype">void</span> notifyConversionError (<span class="keyword">const</span> std::string& formattedName) { insert(formattedName); }</div> -<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordtype">void</span> notifyMissingElement (<span class="keyword">const</span> std::string& formattedName) { insert(formattedName); }</div> -<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordtype">void</span> notifyMissingAttribute(<span class="keyword">const</span> std::string& formattedName, <span class="keyword">const</span> std::string& attribName) { insert(formattedName + <span class="stringliteral">" @"</span> + attribName); }</div> -<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div> -<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keyword">const</span> std::vector<std::string>& elementList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> failedElements; }</div> -<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div> -<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keyword">private</span>:</div> -<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordtype">void</span> insert(<span class="keyword">const</span> std::string& newVal)</div> -<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  {</div> -<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">if</span> (usedElements.insert(newVal).second)</div> -<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  failedElements.push_back(newVal);</div> -<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div> -<div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div> -<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  std::vector<std::string> failedElements; <span class="comment">//unique list of failed elements</span></div> -<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  std::set<std::string> usedElements;</div> -<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  };</div> -<div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div> -<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  std::vector<const XmlElement*> refList; <span class="comment">//all sibling elements with same name (all pointers bound!)</span></div> -<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordtype">size_t</span> refIndex; <span class="comment">//this sibling's index in refList</span></div> -<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  std::string formattedName; <span class="comment">//contains full and formatted element name if (and only if) refList is empty</span></div> -<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  std::shared_ptr<ErrorLog> log; <span class="comment">//always bound</span></div> -<div class="line"><a name="l00387"></a><span class="lineno"> 387</span> };</div> -<div class="line"><a name="l00388"></a><span class="lineno"> 388</span> }</div> -<div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div> -<div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="preprocessor">#endif //ZEN_XML_BIND_HEADER_9081740816593478258435</span></div> -<div class="ttc" id="classzen_1_1_xml_in_html_a33b5dd504d3165aa3f923f6b33e9991a"><div class="ttname"><a href="classzen_1_1_xml_in.html#a33b5dd504d3165aa3f923f6b33e9991a">zen::XmlIn::errorsOccured</a></div><div class="ttdeci">bool errorsOccured() const </div><div class="ttdoc">Notifies errors while mapping the XML to user data. </div><div class="ttdef"><b>Definition:</b> bind.h:320</div></div> -<div class="ttc" id="namespacezen_html_adeeb6b2318097382ae47aa939fc15d4d"><div class="ttname"><a href="namespacezen.html#adeeb6b2318097382ae47aa939fc15d4d">zen::save</a></div><div class="ttdeci">void save(const XmlDoc &doc, const String &filename, const std::string &lineBreak="\r\n", const std::string &indent=" ")</div><div class="ttdoc">Save XML document to a file. </div><div class="ttdef"><b>Definition:</b> bind.h:52</div></div> -<div class="ttc" id="classzen_1_1_xml_doc_html_ad4a9594d93885fc1a12db28e8246648d"><div class="ttname"><a href="classzen_1_1_xml_doc.html#ad4a9594d93885fc1a12db28e8246648d">zen::XmlDoc::root</a></div><div class="ttdeci">const XmlElement & root() const </div><div class="ttdoc">Get a const reference to the document's root element. </div><div class="ttdef"><b>Definition:</b> dom.h:267</div></div> -<div class="ttc" id="namespacezen_html_a1ae1a4688d724b554fe3bf4638700477"><div class="ttname"><a href="namespacezen.html#a1ae1a4688d724b554fe3bf4638700477">zen::parse</a></div><div class="ttdeci">XmlDoc parse(const std::string &stream)</div><div class="ttdoc">Load XML document from a byte stream. </div><div class="ttdef"><b>Definition:</b> parser.h:612</div></div> -<div class="ttc" id="namespacezen_html_afaa4920e275078e6c8009fbdf58b57ee"><div class="ttname"><a href="namespacezen.html#afaa4920e275078e6c8009fbdf58b57ee">zen::serialize</a></div><div class="ttdeci">std::string serialize(const XmlDoc &doc, const std::string &lineBreak="\r\n", const std::string &indent=" ")</div><div class="ttdoc">Save XML document as a byte stream. </div><div class="ttdef"><b>Definition:</b> parser.h:287</div></div> -<div class="ttc" id="classzen_1_1_xml_out_html_ad8b1ccb8f3d4e7b0ab2598597ea50bcc"><div class="ttname"><a href="classzen_1_1_xml_out.html#ad8b1ccb8f3d4e7b0ab2598597ea50bcc">zen::XmlOut::XmlOut</a></div><div class="ttdeci">XmlOut(XmlDoc &doc)</div><div class="ttdoc">Construct an output proxy for an XML document. </div><div class="ttdef"><b>Definition:</b> bind.h:88</div></div> -<div class="ttc" id="classzen_1_1_xml_out_html_aec117344e8a534382e8d5e76711f97b2"><div class="ttname"><a href="classzen_1_1_xml_out.html#aec117344e8a534382e8d5e76711f97b2">zen::XmlOut::ref</a></div><div class="ttdeci">XmlElement & ref()</div><div class="ttdoc">Return a reference to the underlying Xml element. </div><div class="ttdef"><b>Definition:</b> bind.h:146</div></div> -<div class="ttc" id="namespacezen_html_a4ba7bbaa14a787b07fc13da9145aabe2"><div class="ttname"><a href="namespacezen.html#a4ba7bbaa14a787b07fc13da9145aabe2">zen::saveStream</a></div><div class="ttdeci">void saveStream(const std::string &stream, const String &filename)</div><div class="ttdoc">Save byte stream to a file. </div><div class="ttdef"><b>Definition:</b> io.h:66</div></div> -<div class="ttc" id="classzen_1_1_xml_in_html"><div class="ttname"><a href="classzen_1_1_xml_in.html">zen::XmlIn</a></div><div class="ttdoc">Proxy class to conveniently convert XML structure to user data. </div><div class="ttdef"><b>Definition:</b> bind.h:154</div></div> -<div class="ttc" id="classzen_1_1_xml_out_html_a09ca9144515e3c109b36062b0475c8eb"><div class="ttname"><a href="classzen_1_1_xml_out.html#a09ca9144515e3c109b36062b0475c8eb">zen::XmlOut::operator()</a></div><div class="ttdeci">void operator()(const T &value)</div><div class="ttdoc">Write user data to the underlying XML element. </div><div class="ttdef"><b>Definition:</b> bind.h:115</div></div> -<div class="ttc" id="namespacezen_html_a04fe23c3bd9b7d03309620b5ea763607"><div class="ttname"><a href="namespacezen.html#a04fe23c3bd9b7d03309620b5ea763607">zen::loadStream</a></div><div class="ttdeci">std::string loadStream(const String &filename)</div><div class="ttdoc">Load byte stream from a file. </div><div class="ttdef"><b>Definition:</b> io.h:94</div></div> -<div class="ttc" id="classzen_1_1_xml_in_html_a5b48c9848e6c631a04cec2477ff85c0f"><div class="ttname"><a href="classzen_1_1_xml_in.html#a5b48c9848e6c631a04cec2477ff85c0f">zen::XmlIn::XmlIn</a></div><div class="ttdeci">XmlIn(const XmlDoc &doc)</div><div class="ttdoc">Construct an input proxy for an XML document. </div><div class="ttdef"><b>Definition:</b> bind.h:171</div></div> -<div class="ttc" id="classzen_1_1_xml_in_html_a33de75412df69cb25e0fd8b3bc70c9f8"><div class="ttname"><a href="classzen_1_1_xml_in.html#a33de75412df69cb25e0fd8b3bc70c9f8">zen::XmlIn::XmlIn</a></div><div class="ttdeci">XmlIn(const XmlElement &element)</div><div class="ttdoc">Construct an input proxy for a single XML element. </div><div class="ttdef"><b>Definition:</b> bind.h:181</div></div> -<div class="ttc" id="classzen_1_1_xml_in_html_a60cf2678c989621545d27745dcafa4a4"><div class="ttname"><a href="classzen_1_1_xml_in.html#a60cf2678c989621545d27745dcafa4a4">zen::XmlIn::next</a></div><div class="ttdeci">void next()</div><div class="ttdoc">Refer to next sibling element with the same name. </div><div class="ttdef"><b>Definition:</b> bind.h:225</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html"><div class="ttname"><a href="classzen_1_1_xml_element.html">zen::XmlElement</a></div><div class="ttdoc">An XML element. </div><div class="ttdef"><b>Definition:</b> dom.h:21</div></div> -<div class="ttc" id="classzen_1_1_xml_out_html_acaf9b71fe1d907dd63dd4b91e2e03805"><div class="ttname"><a href="classzen_1_1_xml_out.html#acaf9b71fe1d907dd63dd4b91e2e03805">zen::XmlOut::attribute</a></div><div class="ttdeci">void attribute(const String &name, const T &value)</div><div class="ttdoc">Write user data to an XML attribute. </div><div class="ttdef"><b>Definition:</b> bind.h:143</div></div> -<div class="ttc" id="classzen_1_1_xml_in_html_a9b38167835a28eac9a2297f35f51e53d"><div class="ttname"><a href="classzen_1_1_xml_in.html#a9b38167835a28eac9a2297f35f51e53d">zen::XmlIn::operator[]</a></div><div class="ttdeci">XmlIn operator[](const String &name) const </div><div class="ttdoc">Retrieve a handle to an XML child element for reading. </div><div class="ttdef"><b>Definition:</b> bind.h:190</div></div> -<div class="ttc" id="classzen_1_1_xml_doc_html"><div class="ttname"><a href="classzen_1_1_xml_doc.html">zen::XmlDoc</a></div><div class="ttdoc">The complete XML document. </div><div class="ttdef"><b>Definition:</b> dom.h:249</div></div> -<div class="ttc" id="classzen_1_1_xml_in_html_a971cd7054c551c4460d5220f6ec5cf01"><div class="ttname"><a href="classzen_1_1_xml_in.html#a971cd7054c551c4460d5220f6ec5cf01">zen::XmlIn::attribute</a></div><div class="ttdeci">bool attribute(const String &name, T &value) const </div><div class="ttdoc">Read user data from an XML attribute. </div><div class="ttdef"><b>Definition:</b> bind.h:269</div></div> -<div class="ttc" id="classzen_1_1_xml_in_html_a84bb497d3b3fc753d054e52c4823c05e"><div class="ttname"><a href="classzen_1_1_xml_in.html#a84bb497d3b3fc753d054e52c4823c05e">zen::XmlIn::getErrorsAs</a></div><div class="ttdeci">std::vector< String > getErrorsAs() const </div><div class="ttdoc">Get a list of XML element and attribute names which failed to convert to user data. </div><div class="ttdef"><b>Definition:</b> bind.h:328</div></div> -<div class="ttc" id="classzen_1_1_xml_out_html"><div class="ttname"><a href="classzen_1_1_xml_out.html">zen::XmlOut</a></div><div class="ttdoc">Proxy class to conveniently convert user data into XML structure. </div><div class="ttdef"><b>Definition:</b> bind.h:63</div></div> -<div class="ttc" id="classzen_1_1_xml_in_html_a98cc59f687c89549381e76105f8fb506"><div class="ttname"><a href="classzen_1_1_xml_in.html#a98cc59f687c89549381e76105f8fb506">zen::XmlIn::operator()</a></div><div class="ttdeci">bool operator()(T &value) const </div><div class="ttdoc">Read user data from the underlying XML element. </div><div class="ttdef"><b>Definition:</b> bind.h:234</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_a653caffa6fad89db7d14f67f987ad0f9"><div class="ttname"><a href="classzen_1_1_xml_element.html#a653caffa6fad89db7d14f67f987ad0f9">zen::XmlElement::addChild</a></div><div class="ttdeci">XmlElement & addChild(const String &name)</div><div class="ttdoc">Create a new child element and return a reference to it. </div><div class="ttdef"><b>Definition:</b> dom.h:97</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_a3ab82b1720460487f4afabcd115d0c7e"><div class="ttname"><a href="classzen_1_1_xml_element.html#a3ab82b1720460487f4afabcd115d0c7e">zen::XmlElement::getChild</a></div><div class="ttdeci">const XmlElement * getChild(const String &name) const </div><div class="ttdoc">Retrieve a child element with the given name. </div><div class="ttdef"><b>Definition:</b> dom.h:113</div></div> -<div class="ttc" id="namespacezen_html_a2bdcecfe7435ef11cedbce47d4e72ee1"><div class="ttname"><a href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">zen::readStruc</a></div><div class="ttdeci">bool readStruc(const XmlElement &input, T &value)</div><div class="ttdoc">Convert XML element to structured user data. </div><div class="ttdef"><b>Definition:</b> cvrt_struc.h:205</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_a211a6f037c22a54d3facb7a8347a8421"><div class="ttname"><a href="classzen_1_1_xml_element.html#a211a6f037c22a54d3facb7a8347a8421">zen::XmlElement::setAttribute</a></div><div class="ttdeci">void setAttribute(const String &name, const T &value)</div><div class="ttdoc">Create or update an XML attribute. </div><div class="ttdef"><b>Definition:</b> dom.h:77</div></div> -<div class="ttc" id="namespacezen_html_a29ddb823fe0a195f19a64448881b8bf6"><div class="ttname"><a href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">zen::writeStruc</a></div><div class="ttdeci">void writeStruc(const T &value, XmlElement &output)</div><div class="ttdoc">Convert structured user data into an XML element. </div><div class="ttdef"><b>Definition:</b> cvrt_struc.h:198</div></div> -<div class="ttc" id="classzen_1_1_xml_out_html_a00f883d3f9d60535b06b5ae609dc8831"><div class="ttname"><a href="classzen_1_1_xml_out.html#a00f883d3f9d60535b06b5ae609dc8831">zen::XmlOut::operator[]</a></div><div class="ttdeci">XmlOut operator[](const String &name) const </div><div class="ttdoc">Retrieve a handle to an XML child element for writing. </div><div class="ttdef"><b>Definition:</b> bind.h:102</div></div> -<div class="ttc" id="classzen_1_1_xml_in_html_ae072660cde71fd4695c04d074098b430"><div class="ttname"><a href="classzen_1_1_xml_in.html#ae072660cde71fd4695c04d074098b430">zen::XmlIn::XmlIn</a></div><div class="ttdeci">XmlIn(const XmlElement *element)</div><div class="ttdoc">Construct an input proxy for a single XML element, may be nullptr. </div><div class="ttdef"><b>Definition:</b> bind.h:176</div></div> -<div class="ttc" id="classzen_1_1_xml_out_html_aa80be3a56f70a58d2730a763166088c0"><div class="ttname"><a href="classzen_1_1_xml_out.html#aa80be3a56f70a58d2730a763166088c0">zen::XmlOut::XmlOut</a></div><div class="ttdeci">XmlOut(XmlElement &element)</div><div class="ttdoc">Construct an output proxy for a single XML element. </div><div class="ttdef"><b>Definition:</b> bind.h:93</div></div> -<div class="ttc" id="namespacezen_html_a872a48c0616e7f12ae8caca464835e00"><div class="ttname"><a href="namespacezen.html#a872a48c0616e7f12ae8caca464835e00">zen::load</a></div><div class="ttdeci">XmlDoc load(const String &filename)</div><div class="ttdoc">Load XML document from a file. </div><div class="ttdef"><b>Definition:</b> bind.h:33</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/classes.html b/zenxml/doc/classes.html deleted file mode 100644 index d14feac0..00000000 --- a/zenxml/doc/classes.html +++ /dev/null @@ -1,107 +0,0 @@ -<!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>zen::Xml: Class Index</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li class="current"><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="header"> - <div class="headertitle"> -<div class="title">Class Index</div> </div> -</div><!--header--> -<div class="contents"> -<div class="qindex"><a class="qindex" href="#letter_X">X</a></div> -<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0"> -<tr><td rowspan="2" valign="bottom"><a name="letter_X"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  X  </div></td></tr></table> -</td><td valign="top"><a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> (<a class="el" href="namespacezen.html">zen</a>)   </td><td valign="top"><a class="el" href="structzen_1_1_xml_file_error.html">XmlFileError</a> (<a class="el" href="namespacezen.html">zen</a>)   </td><td valign="top"><a class="el" href="classzen_1_1_xml_out.html">XmlOut</a> (<a class="el" href="namespacezen.html">zen</a>)   </td><td></td></tr> -<tr><td valign="top"><a class="el" href="structzen_1_1_xml_error.html">XmlError</a> (<a class="el" href="namespacezen.html">zen</a>)   </td><td valign="top"><a class="el" href="classzen_1_1_xml_in.html">XmlIn</a> (<a class="el" href="namespacezen.html">zen</a>)   </td><td valign="top"><a class="el" href="structzen_1_1_xml_parsing_error.html">XmlParsingError</a> (<a class="el" href="namespacezen.html">zen</a>)   </td><td></td></tr> -<tr><td valign="top"><a class="el" href="classzen_1_1_xml_doc.html">XmlDoc</a> (<a class="el" href="namespacezen.html">zen</a>)   </td><td></td><td></td><td></td><td></td></tr> -<tr><td></td><td></td><td></td><td></td><td></td></tr> -</table> -<div class="qindex"><a class="qindex" href="#letter_X">X</a></div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/classzen_1_1_xml_doc-members.html b/zenxml/doc/classzen_1_1_xml_doc-members.html deleted file mode 100644 index b635379d..00000000 --- a/zenxml/doc/classzen_1_1_xml_doc-members.html +++ /dev/null @@ -1,115 +0,0 @@ -<!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>zen::Xml: Member List</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="namespacezen.html">zen</a></li><li class="navelem"><a class="el" href="classzen_1_1_xml_doc.html">XmlDoc</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">zen::XmlDoc Member List</div> </div> -</div><!--header--> -<div class="contents"> - -<p>This is the complete list of members for <a class="el" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a>, including all inherited members.</p> -<table class="directory"> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html#a64ece4a1f3f8c802192b8f31506535da">getEncodingAs</a>() const </td><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html#ac1bfb9776852dc8195b9ffb4f65452e4">getStandaloneAs</a>() const </td><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html#a7f93dcdc00cdc8d98926cf8e47161665">getVersionAs</a>() const </td><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html#ad4a9594d93885fc1a12db28e8246648d">root</a>() const </td><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html#a094e156f9d265443e52a527638e88a1e">root</a>()</td><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html#a2ae30bca2f490479f58c272148935a62">setEncoding</a>(const String &encoding)</td><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html#a4c92f9b8c1bb47247b827d89794590d4">setStandalone</a>(const String &standalone)</td><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html#ab45914339c476e1da35746f5e00dbc64">setVersion</a>(const String &version)</td><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html#adbed9c31066d456a9cc8c610f15670ed">XmlDoc</a>()</td><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html#a74ff8434848672fe6483845d04c082df">XmlDoc</a>(String rootName)</td><td class="entry"><a class="el" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a></td><td class="entry"></td></tr> -</table></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/classzen_1_1_xml_doc.html b/zenxml/doc/classzen_1_1_xml_doc.html deleted file mode 100644 index 174e84fc..00000000 --- a/zenxml/doc/classzen_1_1_xml_doc.html +++ /dev/null @@ -1,340 +0,0 @@ -<!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>zen::Xml: zen::XmlDoc Class Reference</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="namespacezen.html">zen</a></li><li class="navelem"><a class="el" href="classzen_1_1_xml_doc.html">XmlDoc</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-methods">Public Member Functions</a> | -<a href="classzen_1_1_xml_doc-members.html">List of all members</a> </div> - <div class="headertitle"> -<div class="title">zen::XmlDoc Class Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>The complete XML document. - <a href="classzen_1_1_xml_doc.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="dom_8h_source.html">dom.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> -Public Member Functions</h2></td></tr> -<tr class="memitem:adbed9c31066d456a9cc8c610f15670ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbed9c31066d456a9cc8c610f15670ed"></a> - </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_doc.html#adbed9c31066d456a9cc8c610f15670ed">XmlDoc</a> ()</td></tr> -<tr class="memdesc:adbed9c31066d456a9cc8c610f15670ed"><td class="mdescLeft"> </td><td class="mdescRight">Default constructor setting up an empty XML document with a standard declaration: <?xml version="1.0" encoding="UTF-8" ?> <br/></td></tr> -<tr class="separator:adbed9c31066d456a9cc8c610f15670ed"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a74ff8434848672fe6483845d04c082df"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a74ff8434848672fe6483845d04c082df"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_doc.html#a74ff8434848672fe6483845d04c082df">XmlDoc</a> (String rootName)</td></tr> -<tr class="separator:a74ff8434848672fe6483845d04c082df"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ad4a9594d93885fc1a12db28e8246648d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad4a9594d93885fc1a12db28e8246648d"></a> -const <a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_doc.html#ad4a9594d93885fc1a12db28e8246648d">root</a> () const </td></tr> -<tr class="memdesc:ad4a9594d93885fc1a12db28e8246648d"><td class="mdescLeft"> </td><td class="mdescRight">Get a const reference to the document's root element. <br/></td></tr> -<tr class="separator:ad4a9594d93885fc1a12db28e8246648d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a094e156f9d265443e52a527638e88a1e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a094e156f9d265443e52a527638e88a1e"></a> -<a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_doc.html#a094e156f9d265443e52a527638e88a1e">root</a> ()</td></tr> -<tr class="memdesc:a094e156f9d265443e52a527638e88a1e"><td class="mdescLeft"> </td><td class="mdescRight">Get a reference to the document's root element. <br/></td></tr> -<tr class="separator:a094e156f9d265443e52a527638e88a1e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a7f93dcdc00cdc8d98926cf8e47161665"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a7f93dcdc00cdc8d98926cf8e47161665"><td class="memTemplItemLeft" align="right" valign="top">String </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_doc.html#a7f93dcdc00cdc8d98926cf8e47161665">getVersionAs</a> () const </td></tr> -<tr class="memdesc:a7f93dcdc00cdc8d98926cf8e47161665"><td class="mdescLeft"> </td><td class="mdescRight">Get the version used in the XML declaration. <a href="#a7f93dcdc00cdc8d98926cf8e47161665">More...</a><br/></td></tr> -<tr class="separator:a7f93dcdc00cdc8d98926cf8e47161665"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ab45914339c476e1da35746f5e00dbc64"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:ab45914339c476e1da35746f5e00dbc64"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_doc.html#ab45914339c476e1da35746f5e00dbc64">setVersion</a> (const String &version)</td></tr> -<tr class="memdesc:ab45914339c476e1da35746f5e00dbc64"><td class="mdescLeft"> </td><td class="mdescRight">Set the version used in the XML declaration. <a href="#ab45914339c476e1da35746f5e00dbc64">More...</a><br/></td></tr> -<tr class="separator:ab45914339c476e1da35746f5e00dbc64"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a64ece4a1f3f8c802192b8f31506535da"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a64ece4a1f3f8c802192b8f31506535da"><td class="memTemplItemLeft" align="right" valign="top">String </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_doc.html#a64ece4a1f3f8c802192b8f31506535da">getEncodingAs</a> () const </td></tr> -<tr class="memdesc:a64ece4a1f3f8c802192b8f31506535da"><td class="mdescLeft"> </td><td class="mdescRight">Get the encoding used in the XML declaration. <a href="#a64ece4a1f3f8c802192b8f31506535da">More...</a><br/></td></tr> -<tr class="separator:a64ece4a1f3f8c802192b8f31506535da"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2ae30bca2f490479f58c272148935a62"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a2ae30bca2f490479f58c272148935a62"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_doc.html#a2ae30bca2f490479f58c272148935a62">setEncoding</a> (const String &encoding)</td></tr> -<tr class="memdesc:a2ae30bca2f490479f58c272148935a62"><td class="mdescLeft"> </td><td class="mdescRight">Set the encoding used in the XML declaration. <a href="#a2ae30bca2f490479f58c272148935a62">More...</a><br/></td></tr> -<tr class="separator:a2ae30bca2f490479f58c272148935a62"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac1bfb9776852dc8195b9ffb4f65452e4"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:ac1bfb9776852dc8195b9ffb4f65452e4"><td class="memTemplItemLeft" align="right" valign="top">String </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_doc.html#ac1bfb9776852dc8195b9ffb4f65452e4">getStandaloneAs</a> () const </td></tr> -<tr class="memdesc:ac1bfb9776852dc8195b9ffb4f65452e4"><td class="mdescLeft"> </td><td class="mdescRight">Get the standalone string used in the XML declaration. <a href="#ac1bfb9776852dc8195b9ffb4f65452e4">More...</a><br/></td></tr> -<tr class="separator:ac1bfb9776852dc8195b9ffb4f65452e4"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4c92f9b8c1bb47247b827d89794590d4"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a4c92f9b8c1bb47247b827d89794590d4"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_doc.html#a4c92f9b8c1bb47247b827d89794590d4">setStandalone</a> (const String &standalone)</td></tr> -<tr class="memdesc:a4c92f9b8c1bb47247b827d89794590d4"><td class="mdescLeft"> </td><td class="mdescRight">Set the standalone string used in the XML declaration. <a href="#a4c92f9b8c1bb47247b827d89794590d4">More...</a><br/></td></tr> -<tr class="separator:a4c92f9b8c1bb47247b827d89794590d4"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>The complete XML document. </p> -</div><h2 class="groupheader">Constructor & Destructor Documentation</h2> -<a class="anchor" id="a74ff8434848672fe6483845d04c082df"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">zen::XmlDoc::XmlDoc </td> - <td>(</td> - <td class="paramtype">String </td> - <td class="paramname"><em>rootName</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">rootName</td><td>The name of the XML document's root element. </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<h2 class="groupheader">Member Function Documentation</h2> -<a class="anchor" id="a64ece4a1f3f8c802192b8f31506535da"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">String zen::XmlDoc::getEncodingAs </td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Get the encoding used in the XML declaration. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string class: e.g. std::string, std::wstring, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a class="anchor" id="ac1bfb9776852dc8195b9ffb4f65452e4"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">String zen::XmlDoc::getStandaloneAs </td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Get the standalone string used in the XML declaration. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string class: e.g. std::string, std::wstring, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a class="anchor" id="a7f93dcdc00cdc8d98926cf8e47161665"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">String zen::XmlDoc::getVersionAs </td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Get the version used in the XML declaration. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string class: e.g. std::string, std::wstring, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a class="anchor" id="a2ae30bca2f490479f58c272148935a62"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">void zen::XmlDoc::setEncoding </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>encoding</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Set the encoding used in the XML declaration. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a class="anchor" id="a4c92f9b8c1bb47247b827d89794590d4"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">void zen::XmlDoc::setStandalone </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>standalone</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Set the standalone string used in the XML declaration. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a class="anchor" id="ab45914339c476e1da35746f5e00dbc64"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">void zen::XmlDoc::setVersion </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>version</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Set the version used in the XML declaration. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/classzen_1_1_xml_element-members.html b/zenxml/doc/classzen_1_1_xml_element-members.html deleted file mode 100644 index 90f795dd..00000000 --- a/zenxml/doc/classzen_1_1_xml_element-members.html +++ /dev/null @@ -1,120 +0,0 @@ -<!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>zen::Xml: Member List</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="namespacezen.html">zen</a></li><li class="navelem"><a class="el" href="classzen_1_1_xml_element.html">XmlElement</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">zen::XmlElement Member List</div> </div> -</div><!--header--> -<div class="contents"> - -<p>This is the complete list of members for <a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a>, including all inherited members.</p> -<table class="directory"> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_element.html#a653caffa6fad89db7d14f67f987ad0f9">addChild</a>(const String &name)</td><td class="entry"><a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_element.html#af90ac6f435b03ba37cf47ee188c58887">getAttribute</a>(const String &name, T &value) const </td><td class="entry"><a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_element.html#a3ab82b1720460487f4afabcd115d0c7e">getChild</a>(const String &name) const </td><td class="entry"><a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_element.html#a5d672e8ccc7592442ab927bb267af658">getChild</a>(const String &name)</td><td class="entry"><a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_element.html#a2640b438c4984f5eeb8760d82d73c5b8">getChildren</a>(const String &name) const </td><td class="entry"><a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_element.html#ae209dac9655bc36121abb87688ece41d">getChildren</a>(const String &name)</td><td class="entry"><a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_element.html#a55a6d1849490d82ae900cd9b923908f2">getChildren</a>() const </td><td class="entry"><a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_element.html#ac59268177d162931f937b6a7f235ad96">getChildren</a>()</td><td class="entry"><a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_element.html#a7c911eb06a59c864197b1a4098728e50">getNameAs</a>() const </td><td class="entry"><a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_element.html#a5ac9d586a5668c2c64e3c06c6203b070">getValue</a>(T &value) const </td><td class="entry"><a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_element.html#a4af309f59ef09f46a559f1f0e1eac6c1">parent</a>()</td><td class="entry"><a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_element.html#a7ba1f26be5629f89ba7648d658f7058c">parent</a>() const </td><td class="entry"><a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_element.html#ad9c2ce2e55294c8110825988595e3934">removeAttribute</a>(const String &name)</td><td class="entry"><a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_element.html#a211a6f037c22a54d3facb7a8347a8421">setAttribute</a>(const String &name, const T &value)</td><td class="entry"><a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_element.html#aaf3a26f6199fc88cce7d9d911ba21b01">setValue</a>(const T &value)</td><td class="entry"><a class="el" href="classzen_1_1_xml_element.html">zen::XmlElement</a></td><td class="entry"></td></tr> -</table></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/classzen_1_1_xml_element.html b/zenxml/doc/classzen_1_1_xml_element.html deleted file mode 100644 index 17eef773..00000000 --- a/zenxml/doc/classzen_1_1_xml_element.html +++ /dev/null @@ -1,538 +0,0 @@ -<!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>zen::Xml: zen::XmlElement Class Reference</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="namespacezen.html">zen</a></li><li class="navelem"><a class="el" href="classzen_1_1_xml_element.html">XmlElement</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-methods">Public Member Functions</a> | -<a href="classzen_1_1_xml_element-members.html">List of all members</a> </div> - <div class="headertitle"> -<div class="title">zen::XmlElement Class Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>An XML element. - <a href="classzen_1_1_xml_element.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="dom_8h_source.html">dom.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> -Public Member Functions</h2></td></tr> -<tr class="memitem:a7c911eb06a59c864197b1a4098728e50"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a7c911eb06a59c864197b1a4098728e50"><td class="memTemplItemLeft" align="right" valign="top">String </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html#a7c911eb06a59c864197b1a4098728e50">getNameAs</a> () const </td></tr> -<tr class="memdesc:a7c911eb06a59c864197b1a4098728e50"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve the name of this XML element. <a href="#a7c911eb06a59c864197b1a4098728e50">More...</a><br/></td></tr> -<tr class="separator:a7c911eb06a59c864197b1a4098728e50"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a5ac9d586a5668c2c64e3c06c6203b070"><td class="memTemplParams" colspan="2">template<class T > </td></tr> -<tr class="memitem:a5ac9d586a5668c2c64e3c06c6203b070"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html#a5ac9d586a5668c2c64e3c06c6203b070">getValue</a> (T &value) const </td></tr> -<tr class="memdesc:a5ac9d586a5668c2c64e3c06c6203b070"><td class="mdescLeft"> </td><td class="mdescRight">Get the value of this element as a user type. <a href="#a5ac9d586a5668c2c64e3c06c6203b070">More...</a><br/></td></tr> -<tr class="separator:a5ac9d586a5668c2c64e3c06c6203b070"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aaf3a26f6199fc88cce7d9d911ba21b01"><td class="memTemplParams" colspan="2">template<class T > </td></tr> -<tr class="memitem:aaf3a26f6199fc88cce7d9d911ba21b01"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html#aaf3a26f6199fc88cce7d9d911ba21b01">setValue</a> (const T &value)</td></tr> -<tr class="memdesc:aaf3a26f6199fc88cce7d9d911ba21b01"><td class="mdescLeft"> </td><td class="mdescRight">Set the value of this element. <a href="#aaf3a26f6199fc88cce7d9d911ba21b01">More...</a><br/></td></tr> -<tr class="separator:aaf3a26f6199fc88cce7d9d911ba21b01"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:af90ac6f435b03ba37cf47ee188c58887"><td class="memTemplParams" colspan="2">template<class String , class T > </td></tr> -<tr class="memitem:af90ac6f435b03ba37cf47ee188c58887"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html#af90ac6f435b03ba37cf47ee188c58887">getAttribute</a> (const String &name, T &value) const </td></tr> -<tr class="memdesc:af90ac6f435b03ba37cf47ee188c58887"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve an attribute by name. <a href="#af90ac6f435b03ba37cf47ee188c58887">More...</a><br/></td></tr> -<tr class="separator:af90ac6f435b03ba37cf47ee188c58887"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a211a6f037c22a54d3facb7a8347a8421"><td class="memTemplParams" colspan="2">template<class String , class T > </td></tr> -<tr class="memitem:a211a6f037c22a54d3facb7a8347a8421"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html#a211a6f037c22a54d3facb7a8347a8421">setAttribute</a> (const String &name, const T &value)</td></tr> -<tr class="memdesc:a211a6f037c22a54d3facb7a8347a8421"><td class="mdescLeft"> </td><td class="mdescRight">Create or update an XML attribute. <a href="#a211a6f037c22a54d3facb7a8347a8421">More...</a><br/></td></tr> -<tr class="separator:a211a6f037c22a54d3facb7a8347a8421"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ad9c2ce2e55294c8110825988595e3934"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:ad9c2ce2e55294c8110825988595e3934"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html#ad9c2ce2e55294c8110825988595e3934">removeAttribute</a> (const String &name)</td></tr> -<tr class="memdesc:ad9c2ce2e55294c8110825988595e3934"><td class="mdescLeft"> </td><td class="mdescRight">Remove the attribute with the given name. <a href="#ad9c2ce2e55294c8110825988595e3934">More...</a><br/></td></tr> -<tr class="separator:ad9c2ce2e55294c8110825988595e3934"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a653caffa6fad89db7d14f67f987ad0f9"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a653caffa6fad89db7d14f67f987ad0f9"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html#a653caffa6fad89db7d14f67f987ad0f9">addChild</a> (const String &name)</td></tr> -<tr class="memdesc:a653caffa6fad89db7d14f67f987ad0f9"><td class="mdescLeft"> </td><td class="mdescRight">Create a new child element and return a reference to it. <a href="#a653caffa6fad89db7d14f67f987ad0f9">More...</a><br/></td></tr> -<tr class="separator:a653caffa6fad89db7d14f67f987ad0f9"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a3ab82b1720460487f4afabcd115d0c7e"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a3ab82b1720460487f4afabcd115d0c7e"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> * </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html#a3ab82b1720460487f4afabcd115d0c7e">getChild</a> (const String &name) const </td></tr> -<tr class="memdesc:a3ab82b1720460487f4afabcd115d0c7e"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve a child element with the given name. <a href="#a3ab82b1720460487f4afabcd115d0c7e">More...</a><br/></td></tr> -<tr class="separator:a3ab82b1720460487f4afabcd115d0c7e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a5d672e8ccc7592442ab927bb267af658"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a5d672e8ccc7592442ab927bb267af658"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> * </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html#a5d672e8ccc7592442ab927bb267af658">getChild</a> (const String &name)</td></tr> -<tr class="separator:a5d672e8ccc7592442ab927bb267af658"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2640b438c4984f5eeb8760d82d73c5b8"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a2640b438c4984f5eeb8760d82d73c5b8"><td class="memTemplItemLeft" align="right" valign="top">std::pair< ChildIterConst2, <br class="typebreak"/> -ChildIterConst2 > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html#a2640b438c4984f5eeb8760d82d73c5b8">getChildren</a> (const String &name) const </td></tr> -<tr class="memdesc:a2640b438c4984f5eeb8760d82d73c5b8"><td class="mdescLeft"> </td><td class="mdescRight">Access all child elements with the given name via STL iterators. <a href="#a2640b438c4984f5eeb8760d82d73c5b8">More...</a><br/></td></tr> -<tr class="separator:a2640b438c4984f5eeb8760d82d73c5b8"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae209dac9655bc36121abb87688ece41d"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:ae209dac9655bc36121abb87688ece41d"><td class="memTemplItemLeft" align="right" valign="top">std::pair< ChildIter2, ChildIter2 > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html#ae209dac9655bc36121abb87688ece41d">getChildren</a> (const String &name)</td></tr> -<tr class="separator:ae209dac9655bc36121abb87688ece41d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a55a6d1849490d82ae900cd9b923908f2"><td class="memItemLeft" align="right" valign="top">std::pair< ChildIterConst, <br class="typebreak"/> -ChildIterConst > </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html#a55a6d1849490d82ae900cd9b923908f2">getChildren</a> () const </td></tr> -<tr class="memdesc:a55a6d1849490d82ae900cd9b923908f2"><td class="mdescLeft"> </td><td class="mdescRight">Access all child elements sequentially via STL iterators. <a href="#a55a6d1849490d82ae900cd9b923908f2">More...</a><br/></td></tr> -<tr class="separator:a55a6d1849490d82ae900cd9b923908f2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ac59268177d162931f937b6a7f235ad96"><td class="memItemLeft" align="right" valign="top">std::pair< ChildIter, ChildIter > </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html#ac59268177d162931f937b6a7f235ad96">getChildren</a> ()</td></tr> -<tr class="separator:ac59268177d162931f937b6a7f235ad96"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4af309f59ef09f46a559f1f0e1eac6c1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4af309f59ef09f46a559f1f0e1eac6c1"></a> -<a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html#a4af309f59ef09f46a559f1f0e1eac6c1">parent</a> ()</td></tr> -<tr class="memdesc:a4af309f59ef09f46a559f1f0e1eac6c1"><td class="mdescLeft"> </td><td class="mdescRight">Get parent XML element, may be nullptr for root element. <br/></td></tr> -<tr class="separator:a4af309f59ef09f46a559f1f0e1eac6c1"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a7ba1f26be5629f89ba7648d658f7058c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ba1f26be5629f89ba7648d658f7058c"></a> -const <a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html#a7ba1f26be5629f89ba7648d658f7058c">parent</a> () const </td></tr> -<tr class="memdesc:a7ba1f26be5629f89ba7648d658f7058c"><td class="mdescLeft"> </td><td class="mdescRight">Get parent XML element, may be nullptr for root element. <br/></td></tr> -<tr class="separator:a7ba1f26be5629f89ba7648d658f7058c"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>An XML element. </p> -</div><h2 class="groupheader">Member Function Documentation</h2> -<a class="anchor" id="a653caffa6fad89db7d14f67f987ad0f9"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="classzen_1_1_xml_element.html">XmlElement</a>& zen::XmlElement::addChild </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>name</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Create a new child element and return a reference to it. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">name</td><td>The name of the child element to be created. </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a class="anchor" id="af90ac6f435b03ba37cf47ee188c58887"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String , class T > </div> - <table class="memname"> - <tr> - <td class="memname">bool zen::XmlElement::getAttribute </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>name</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">T & </td> - <td class="paramname"><em>value</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Retrieve an attribute by name. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - <tr><td class="paramname">T</td><td>String-convertible user data type: e.g. any string class, all built-in arithmetic numbers </td></tr> - </table> - </dd> -</dl> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">name</td><td>The name of the attribute to retrieve. </td></tr> - <tr><td class="paramname">value</td><td>The value of the attribute converted to T. </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>"true" if value was retrieved successfully. </dd></dl> - -</div> -</div> -<a class="anchor" id="a3ab82b1720460487f4afabcd115d0c7e"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">const <a class="el" href="classzen_1_1_xml_element.html">XmlElement</a>* zen::XmlElement::getChild </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>name</em></td><td>)</td> - <td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Retrieve a child element with the given name. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">name</td><td>The name of the child element to be retrieved. </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>A pointer to the child element or nullptr if none was found. </dd></dl> - -</div> -</div> -<a class="anchor" id="a5d672e8ccc7592442ab927bb267af658"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="classzen_1_1_xml_element.html">XmlElement</a>* zen::XmlElement::getChild </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>name</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> -<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classzen_1_1_xml_element.html#a3ab82b1720460487f4afabcd115d0c7e" title="Retrieve a child element with the given name. ">getChild</a> </dd></dl> - -</div> -</div> -<a class="anchor" id="a2640b438c4984f5eeb8760d82d73c5b8"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">std::pair<ChildIterConst2, ChildIterConst2> zen::XmlElement::getChildren </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>name</em></td><td>)</td> - <td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Access all child elements with the given name via STL iterators. </p> -<div class="fragment"><div class="line"><span class="keyword">auto</span> iterPair = elem.getChildren(<span class="stringliteral">"Item"</span>);</div> -<div class="line">std::for_each(iterPair.first, iterPair.second,</div> -<div class="line"> [](<span class="keyword">const</span> XmlElement& child) { ... });</div> -</div><!-- fragment --> <dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">name</td><td>The name of the child elements to be retrieved. </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>A pair of STL begin/end iterators to access the child elements sequentially. </dd></dl> - -</div> -</div> -<a class="anchor" id="ae209dac9655bc36121abb87688ece41d"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">std::pair<ChildIter2, ChildIter2> zen::XmlElement::getChildren </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>name</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> -<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classzen_1_1_xml_element.html#a2640b438c4984f5eeb8760d82d73c5b8" title="Access all child elements with the given name via STL iterators. ">getChildren</a> </dd></dl> - -</div> -</div> -<a class="anchor" id="a55a6d1849490d82ae900cd9b923908f2"></a> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">std::pair<ChildIterConst, ChildIterConst> zen::XmlElement::getChildren </td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Access all child elements sequentially via STL iterators. </p> -<div class="fragment"><div class="line"><span class="keyword">auto</span> iterPair = elem.getChildren();</div> -<div class="line">std::for_each(iterPair.first, iterPair.second,</div> -<div class="line"> [](<span class="keyword">const</span> XmlElement& child) { ... });</div> -</div><!-- fragment --> <dl class="section return"><dt>Returns</dt><dd>A pair of STL begin/end iterators to access all child elements sequentially. </dd></dl> - -</div> -</div> -<a class="anchor" id="ac59268177d162931f937b6a7f235ad96"></a> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">std::pair<ChildIter, ChildIter> zen::XmlElement::getChildren </td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> -<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classzen_1_1_xml_element.html#a2640b438c4984f5eeb8760d82d73c5b8" title="Access all child elements with the given name via STL iterators. ">getChildren</a> </dd></dl> - -</div> -</div> -<a class="anchor" id="a7c911eb06a59c864197b1a4098728e50"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">String zen::XmlElement::getNameAs </td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Retrieve the name of this XML element. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string class: e.g. std::string, std::wstring, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>Name of the XML element. </dd></dl> - -</div> -</div> -<a class="anchor" id="a5ac9d586a5668c2c64e3c06c6203b070"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class T > </div> - <table class="memname"> - <tr> - <td class="memname">bool zen::XmlElement::getValue </td> - <td>(</td> - <td class="paramtype">T & </td> - <td class="paramname"><em>value</em></td><td>)</td> - <td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Get the value of this element as a user type. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">T</td><td>Arbitrary user data type: e.g. any string class, all built-in arithmetic numbers, STL container, ... </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>"true" if Xml element was successfully converted to value, cannot fail for string-like types </dd></dl> - -</div> -</div> -<a class="anchor" id="ad9c2ce2e55294c8110825988595e3934"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">void zen::XmlElement::removeAttribute </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>name</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Remove the attribute with the given name. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a class="anchor" id="a211a6f037c22a54d3facb7a8347a8421"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String , class T > </div> - <table class="memname"> - <tr> - <td class="memname">void zen::XmlElement::setAttribute </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>name</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const T & </td> - <td class="paramname"><em>value</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Create or update an XML attribute. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - <tr><td class="paramname">T</td><td>String-convertible user data type: e.g. any string-like type, all built-in arithmetic numbers </td></tr> - </table> - </dd> -</dl> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">name</td><td>The name of the attribute to create or update. </td></tr> - <tr><td class="paramname">value</td><td>The value to set. </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a class="anchor" id="aaf3a26f6199fc88cce7d9d911ba21b01"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class T > </div> - <table class="memname"> - <tr> - <td class="memname">void zen::XmlElement::setValue </td> - <td>(</td> - <td class="paramtype">const T & </td> - <td class="paramname"><em>value</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Set the value of this element. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">T</td><td>Arbitrary user data type: e.g. any string-like type, all built-in arithmetic numbers, STL container, ... </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/classzen_1_1_xml_in-members.html b/zenxml/doc/classzen_1_1_xml_in-members.html deleted file mode 100644 index 56de270c..00000000 --- a/zenxml/doc/classzen_1_1_xml_in-members.html +++ /dev/null @@ -1,116 +0,0 @@ -<!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>zen::Xml: Member List</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="namespacezen.html">zen</a></li><li class="navelem"><a class="el" href="classzen_1_1_xml_in.html">XmlIn</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">zen::XmlIn Member List</div> </div> -</div><!--header--> -<div class="contents"> - -<p>This is the complete list of members for <a class="el" href="classzen_1_1_xml_in.html">zen::XmlIn</a>, including all inherited members.</p> -<table class="directory"> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_in.html#a971cd7054c551c4460d5220f6ec5cf01">attribute</a>(const String &name, T &value) const </td><td class="entry"><a class="el" href="classzen_1_1_xml_in.html">zen::XmlIn</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_in.html#a33b5dd504d3165aa3f923f6b33e9991a">errorsOccured</a>() const </td><td class="entry"><a class="el" href="classzen_1_1_xml_in.html">zen::XmlIn</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_in.html#a647b468b7c6c95b25f2e43627184177f">get</a>() const </td><td class="entry"><a class="el" href="classzen_1_1_xml_in.html">zen::XmlIn</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_in.html#a84bb497d3b3fc753d054e52c4823c05e">getErrorsAs</a>() const </td><td class="entry"><a class="el" href="classzen_1_1_xml_in.html">zen::XmlIn</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_in.html#a60cf2678c989621545d27745dcafa4a4">next</a>()</td><td class="entry"><a class="el" href="classzen_1_1_xml_in.html">zen::XmlIn</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_in.html#a954950849b52557369932ab2a8b4ad72">operator int ConversionToBool::*</a>() const </td><td class="entry"><a class="el" href="classzen_1_1_xml_in.html">zen::XmlIn</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_in.html#a98cc59f687c89549381e76105f8fb506">operator()</a>(T &value) const </td><td class="entry"><a class="el" href="classzen_1_1_xml_in.html">zen::XmlIn</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_in.html#a9b38167835a28eac9a2297f35f51e53d">operator[]</a>(const String &name) const </td><td class="entry"><a class="el" href="classzen_1_1_xml_in.html">zen::XmlIn</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_in.html#a5b48c9848e6c631a04cec2477ff85c0f">XmlIn</a>(const XmlDoc &doc)</td><td class="entry"><a class="el" href="classzen_1_1_xml_in.html">zen::XmlIn</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_in.html#ae072660cde71fd4695c04d074098b430">XmlIn</a>(const XmlElement *element)</td><td class="entry"><a class="el" href="classzen_1_1_xml_in.html">zen::XmlIn</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_in.html#a33de75412df69cb25e0fd8b3bc70c9f8">XmlIn</a>(const XmlElement &element)</td><td class="entry"><a class="el" href="classzen_1_1_xml_in.html">zen::XmlIn</a></td><td class="entry"></td></tr> -</table></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/classzen_1_1_xml_in.html b/zenxml/doc/classzen_1_1_xml_in.html deleted file mode 100644 index 15153347..00000000 --- a/zenxml/doc/classzen_1_1_xml_in.html +++ /dev/null @@ -1,432 +0,0 @@ -<!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>zen::Xml: zen::XmlIn Class Reference</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="namespacezen.html">zen</a></li><li class="navelem"><a class="el" href="classzen_1_1_xml_in.html">XmlIn</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-methods">Public Member Functions</a> | -<a href="classzen_1_1_xml_in-members.html">List of all members</a> </div> - <div class="headertitle"> -<div class="title">zen::XmlIn Class Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Proxy class to conveniently convert XML structure to user data. - <a href="classzen_1_1_xml_in.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="bind_8h_source.html">bind.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> -Public Member Functions</h2></td></tr> -<tr class="memitem:a5b48c9848e6c631a04cec2477ff85c0f"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_in.html#a5b48c9848e6c631a04cec2477ff85c0f">XmlIn</a> (const <a class="el" href="classzen_1_1_xml_doc.html">XmlDoc</a> &doc)</td></tr> -<tr class="memdesc:a5b48c9848e6c631a04cec2477ff85c0f"><td class="mdescLeft"> </td><td class="mdescRight">Construct an input proxy for an XML document. <a href="#a5b48c9848e6c631a04cec2477ff85c0f">More...</a><br/></td></tr> -<tr class="separator:a5b48c9848e6c631a04cec2477ff85c0f"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae072660cde71fd4695c04d074098b430"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_in.html#ae072660cde71fd4695c04d074098b430">XmlIn</a> (const <a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> *element)</td></tr> -<tr class="memdesc:ae072660cde71fd4695c04d074098b430"><td class="mdescLeft"> </td><td class="mdescRight">Construct an input proxy for a single XML element, may be nullptr. <a href="#ae072660cde71fd4695c04d074098b430">More...</a><br/></td></tr> -<tr class="separator:ae072660cde71fd4695c04d074098b430"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a33de75412df69cb25e0fd8b3bc70c9f8"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_in.html#a33de75412df69cb25e0fd8b3bc70c9f8">XmlIn</a> (const <a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> &element)</td></tr> -<tr class="memdesc:a33de75412df69cb25e0fd8b3bc70c9f8"><td class="mdescLeft"> </td><td class="mdescRight">Construct an input proxy for a single XML element. <a href="#a33de75412df69cb25e0fd8b3bc70c9f8">More...</a><br/></td></tr> -<tr class="separator:a33de75412df69cb25e0fd8b3bc70c9f8"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a9b38167835a28eac9a2297f35f51e53d"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a9b38167835a28eac9a2297f35f51e53d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classzen_1_1_xml_in.html">XmlIn</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_in.html#a9b38167835a28eac9a2297f35f51e53d">operator[]</a> (const String &name) const </td></tr> -<tr class="memdesc:a9b38167835a28eac9a2297f35f51e53d"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve a handle to an XML child element for reading. <a href="#a9b38167835a28eac9a2297f35f51e53d">More...</a><br/></td></tr> -<tr class="separator:a9b38167835a28eac9a2297f35f51e53d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a60cf2678c989621545d27745dcafa4a4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_in.html#a60cf2678c989621545d27745dcafa4a4">next</a> ()</td></tr> -<tr class="memdesc:a60cf2678c989621545d27745dcafa4a4"><td class="mdescLeft"> </td><td class="mdescRight">Refer to next sibling element with the same name. <a href="#a60cf2678c989621545d27745dcafa4a4">More...</a><br/></td></tr> -<tr class="separator:a60cf2678c989621545d27745dcafa4a4"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a98cc59f687c89549381e76105f8fb506"><td class="memTemplParams" colspan="2">template<class T > </td></tr> -<tr class="memitem:a98cc59f687c89549381e76105f8fb506"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_in.html#a98cc59f687c89549381e76105f8fb506">operator()</a> (T &value) const </td></tr> -<tr class="memdesc:a98cc59f687c89549381e76105f8fb506"><td class="mdescLeft"> </td><td class="mdescRight">Read user data from the underlying XML element. <a href="#a98cc59f687c89549381e76105f8fb506">More...</a><br/></td></tr> -<tr class="separator:a98cc59f687c89549381e76105f8fb506"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a971cd7054c551c4460d5220f6ec5cf01"><td class="memTemplParams" colspan="2">template<class String , class T > </td></tr> -<tr class="memitem:a971cd7054c551c4460d5220f6ec5cf01"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_in.html#a971cd7054c551c4460d5220f6ec5cf01">attribute</a> (const String &name, T &value) const </td></tr> -<tr class="memdesc:a971cd7054c551c4460d5220f6ec5cf01"><td class="mdescLeft"> </td><td class="mdescRight">Read user data from an XML attribute. <a href="#a971cd7054c551c4460d5220f6ec5cf01">More...</a><br/></td></tr> -<tr class="separator:a971cd7054c551c4460d5220f6ec5cf01"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a647b468b7c6c95b25f2e43627184177f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a647b468b7c6c95b25f2e43627184177f"></a> -const <a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_in.html#a647b468b7c6c95b25f2e43627184177f">get</a> () const </td></tr> -<tr class="memdesc:a647b468b7c6c95b25f2e43627184177f"><td class="mdescLeft"> </td><td class="mdescRight">Return a pointer to the underlying Xml element, may be nullptr. <br/></td></tr> -<tr class="separator:a647b468b7c6c95b25f2e43627184177f"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a954950849b52557369932ab2a8b4ad72"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_in.html#a954950849b52557369932ab2a8b4ad72">operator int ConversionToBool::*</a> () const </td></tr> -<tr class="memdesc:a954950849b52557369932ab2a8b4ad72"><td class="mdescLeft"> </td><td class="mdescRight">Test whether the underlying XML element exists. <a href="#a954950849b52557369932ab2a8b4ad72">More...</a><br/></td></tr> -<tr class="separator:a954950849b52557369932ab2a8b4ad72"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a33b5dd504d3165aa3f923f6b33e9991a"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_in.html#a33b5dd504d3165aa3f923f6b33e9991a">errorsOccured</a> () const </td></tr> -<tr class="memdesc:a33b5dd504d3165aa3f923f6b33e9991a"><td class="mdescLeft"> </td><td class="mdescRight">Notifies errors while mapping the XML to user data. <a href="#a33b5dd504d3165aa3f923f6b33e9991a">More...</a><br/></td></tr> -<tr class="separator:a33b5dd504d3165aa3f923f6b33e9991a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a84bb497d3b3fc753d054e52c4823c05e"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a84bb497d3b3fc753d054e52c4823c05e"><td class="memTemplItemLeft" align="right" valign="top">std::vector< String > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_in.html#a84bb497d3b3fc753d054e52c4823c05e">getErrorsAs</a> () const </td></tr> -<tr class="memdesc:a84bb497d3b3fc753d054e52c4823c05e"><td class="mdescLeft"> </td><td class="mdescRight">Get a list of XML element and attribute names which failed to convert to user data. <a href="#a84bb497d3b3fc753d054e52c4823c05e">More...</a><br/></td></tr> -<tr class="separator:a84bb497d3b3fc753d054e52c4823c05e"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Proxy class to conveniently convert XML structure to user data. </p> -</div><h2 class="groupheader">Constructor & Destructor Documentation</h2> -<a class="anchor" id="a5b48c9848e6c631a04cec2477ff85c0f"></a> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">zen::XmlIn::XmlIn </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="classzen_1_1_xml_doc.html">XmlDoc</a> & </td> - <td class="paramname"><em>doc</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Construct an input proxy for an XML document. </p> -<div class="fragment"><div class="line"><a class="code" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a> doc;</div> -<div class="line"> ... <span class="comment">//load document</span></div> -<div class="line"><a class="code" href="classzen_1_1_xml_in.html">zen::XmlIn</a> in(doc);</div> -<div class="line">in[<span class="stringliteral">"elem1"</span>](value1); <span class="comment">//</span></div> -<div class="line">in[<span class="stringliteral">"elem2"</span>](value2); <span class="comment">//read data from XML elements into variables "value1", "value2", "value3"</span></div> -<div class="line">in[<span class="stringliteral">"elem3"</span>](value3); <span class="comment">//</span></div> -</div><!-- fragment --> -</div> -</div> -<a class="anchor" id="ae072660cde71fd4695c04d074098b430"></a> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">zen::XmlIn::XmlIn </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> * </td> - <td class="paramname"><em>element</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Construct an input proxy for a single XML element, may be nullptr. </p> -<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classzen_1_1_xml_in.html#a5b48c9848e6c631a04cec2477ff85c0f" title="Construct an input proxy for an XML document. ">XmlIn(const XmlDoc& doc)</a> </dd></dl> - -</div> -</div> -<a class="anchor" id="a33de75412df69cb25e0fd8b3bc70c9f8"></a> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">zen::XmlIn::XmlIn </td> - <td>(</td> - <td class="paramtype">const <a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> & </td> - <td class="paramname"><em>element</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Construct an input proxy for a single XML element. </p> -<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classzen_1_1_xml_in.html#a5b48c9848e6c631a04cec2477ff85c0f" title="Construct an input proxy for an XML document. ">XmlIn(const XmlDoc& doc)</a> </dd></dl> - -</div> -</div> -<h2 class="groupheader">Member Function Documentation</h2> -<a class="anchor" id="a971cd7054c551c4460d5220f6ec5cf01"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String , class T > </div> - <table class="memname"> - <tr> - <td class="memname">bool zen::XmlIn::attribute </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>name</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">T & </td> - <td class="paramname"><em>value</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Read user data from an XML attribute. </p> -<p>This conversion requires a specialization of <a class="el" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff" title="Convert text to user data - used by XML elements and attributes. ">zen::readText()</a> for type T.</p> -<div class="fragment"><div class="line"><a class="code" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a> doc;</div> -<div class="line"> ... <span class="comment">//load document</span></div> -<div class="line"><a class="code" href="classzen_1_1_xml_in.html">zen::XmlIn</a> in(doc);</div> -<div class="line">in[<span class="stringliteral">"elem"</span>].attribute(<span class="stringliteral">"attr1"</span>, value1); <span class="comment">//</span></div> -<div class="line">in[<span class="stringliteral">"elem"</span>].attribute(<span class="stringliteral">"attr2"</span>, value2); <span class="comment">//read data from XML attributes into variables "value1", "value2", "value3"</span></div> -<div class="line">in[<span class="stringliteral">"elem"</span>].attribute(<span class="stringliteral">"attr3"</span>, value3); <span class="comment">//</span></div> -</div><!-- fragment --><dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - <tr><td class="paramname">T</td><td>String-convertible user data type: e.g. any string-like type, all built-in arithmetic numbers </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>"true" if the attribute was found and the conversion to the output value was successful. </dd></dl> -<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classzen_1_1_xml_element.html#af90ac6f435b03ba37cf47ee188c58887" title="Retrieve an attribute by name. ">XmlElement::getAttribute()</a> </dd></dl> - -</div> -</div> -<a class="anchor" id="a33b5dd504d3165aa3f923f6b33e9991a"></a> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">bool zen::XmlIn::errorsOccured </td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Notifies errors while mapping the XML to user data. </p> -<p>Error logging is shared by each hiearchy of <a class="el" href="classzen_1_1_xml_in.html" title="Proxy class to conveniently convert XML structure to user data. ">XmlIn</a> proxy instances that are created from each other. Consequently it doesn't matter which instance you query for errors: </p> -<div class="fragment"><div class="line"><a class="code" href="classzen_1_1_xml_in.html#a5b48c9848e6c631a04cec2477ff85c0f">XmlIn</a> in(doc);</div> -<div class="line"><a class="code" href="classzen_1_1_xml_in.html#a5b48c9848e6c631a04cec2477ff85c0f">XmlIn</a> inItem = in[<span class="stringliteral">"item1"</span>];</div> -<div class="line"></div> -<div class="line"><span class="keywordtype">int</span> value = 0;</div> -<div class="line">inItem(value); <span class="comment">//let's assume this conversion failed</span></div> -<div class="line"></div> -<div class="line">assert(in.errorsOccured() == inItem.errorsOccured());</div> -<div class="line">assert(in.getErrorsAs<std::string>() == inItem.getErrorsAs<std::string>());</div> -</div><!-- fragment --><p>Note that error logging is <b>NOT</b> global, but owned by all instances of a hierarchy of <a class="el" href="classzen_1_1_xml_in.html" title="Proxy class to conveniently convert XML structure to user data. ">XmlIn</a> proxies. Therefore it's safe to use unrelated <a class="el" href="classzen_1_1_xml_in.html" title="Proxy class to conveniently convert XML structure to user data. ">XmlIn</a> proxies in multiple threads. <br/> -<br/> - However be aware that the chain of connected proxy instances will be broken once you call <a class="el" href="classzen_1_1_xml_in.html#a647b468b7c6c95b25f2e43627184177f" title="Return a pointer to the underlying Xml element, may be nullptr. ">XmlIn::get()</a> to retrieve the underlying pointer. Errors that occur when working with this pointer are not logged by the original set of related instances. </p> - -</div> -</div> -<a class="anchor" id="a84bb497d3b3fc753d054e52c4823c05e"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">std::vector<String> zen::XmlIn::getErrorsAs </td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Get a list of XML element and attribute names which failed to convert to user data. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string class: e.g. std::string, std::wstring, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>A list of XML element and attribute names, empty list if no errors occured. </dd></dl> - -</div> -</div> -<a class="anchor" id="a60cf2678c989621545d27745dcafa4a4"></a> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">void zen::XmlIn::next </td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Refer to next sibling element with the same name. </p> -<p><b>Example:</b> Loop over all XML child elements named "Item" </p> -<pre class="fragment"><?xml version="1.0" encoding="UTF-8"?> -<Root> - <Item>1</Item> - <Item>3</Item> - <Item>5</Item> -</Root> -</pre><div class="fragment"><div class="line"><a class="code" href="classzen_1_1_xml_in.html">zen::XmlIn</a> in(doc);</div> -<div class="line">...</div> -<div class="line">for (<a class="code" href="classzen_1_1_xml_in.html">zen::XmlIn</a> child = in[<span class="stringliteral">"Item"</span>]; child; child.<a class="code" href="classzen_1_1_xml_in.html#a60cf2678c989621545d27745dcafa4a4">next</a>())</div> -<div class="line">{</div> -<div class="line"> ...</div> -<div class="line">}</div> -</div><!-- fragment --> -</div> -</div> -<a class="anchor" id="a954950849b52557369932ab2a8b4ad72"></a> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">zen::XmlIn::operator int ConversionToBool::* </td> - <td>(</td> - <td class="paramname"></td><td>)</td> - <td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Test whether the underlying XML element exists. </p> -<div class="fragment"><div class="line"><a class="code" href="classzen_1_1_xml_in.html#a5b48c9848e6c631a04cec2477ff85c0f">XmlIn</a> in(doc);</div> -<div class="line"><a class="code" href="classzen_1_1_xml_in.html#a5b48c9848e6c631a04cec2477ff85c0f">XmlIn</a> child = in[<span class="stringliteral">"elem1"</span>];</div> -<div class="line"><span class="keywordflow">if</span> (child)</div> -<div class="line"> ...</div> -</div><!-- fragment --><p> Use member pointer as implicit conversion to bool (C++ Templates - Vandevoorde/Josuttis; chapter 20) </p> - -</div> -</div> -<a class="anchor" id="a98cc59f687c89549381e76105f8fb506"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class T > </div> - <table class="memname"> - <tr> - <td class="memname">bool zen::XmlIn::operator() </td> - <td>(</td> - <td class="paramtype">T & </td> - <td class="paramname"><em>value</em></td><td>)</td> - <td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Read user data from the underlying XML element. </p> -<p>This conversion requires a specialization of <a class="el" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff" title="Convert text to user data - used by XML elements and attributes. ">zen::readText()</a> or <a class="el" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1" title="Convert XML element to structured user data. ">zen::readStruc()</a> for type T. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">T</td><td>User type that receives the data </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>"true" if data was read successfully </dd></dl> - -</div> -</div> -<a class="anchor" id="a9b38167835a28eac9a2297f35f51e53d"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="classzen_1_1_xml_in.html">XmlIn</a> zen::XmlIn::operator[] </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>name</em></td><td>)</td> - <td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Retrieve a handle to an XML child element for reading. </p> -<p>It is <b>not</b> an error if the child element does not exist, but only later if a conversion to user data is attempted. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">name</td><td>The name of the child element </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/classzen_1_1_xml_out-members.html b/zenxml/doc/classzen_1_1_xml_out-members.html deleted file mode 100644 index 0bcc8777..00000000 --- a/zenxml/doc/classzen_1_1_xml_out-members.html +++ /dev/null @@ -1,111 +0,0 @@ -<!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>zen::Xml: Member List</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="namespacezen.html">zen</a></li><li class="navelem"><a class="el" href="classzen_1_1_xml_out.html">XmlOut</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">zen::XmlOut Member List</div> </div> -</div><!--header--> -<div class="contents"> - -<p>This is the complete list of members for <a class="el" href="classzen_1_1_xml_out.html">zen::XmlOut</a>, including all inherited members.</p> -<table class="directory"> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_out.html#acaf9b71fe1d907dd63dd4b91e2e03805">attribute</a>(const String &name, const T &value)</td><td class="entry"><a class="el" href="classzen_1_1_xml_out.html">zen::XmlOut</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_out.html#a09ca9144515e3c109b36062b0475c8eb">operator()</a>(const T &value)</td><td class="entry"><a class="el" href="classzen_1_1_xml_out.html">zen::XmlOut</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_out.html#a00f883d3f9d60535b06b5ae609dc8831">operator[]</a>(const String &name) const </td><td class="entry"><a class="el" href="classzen_1_1_xml_out.html">zen::XmlOut</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_out.html#aec117344e8a534382e8d5e76711f97b2">ref</a>()</td><td class="entry"><a class="el" href="classzen_1_1_xml_out.html">zen::XmlOut</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="classzen_1_1_xml_out.html#ad8b1ccb8f3d4e7b0ab2598597ea50bcc">XmlOut</a>(XmlDoc &doc)</td><td class="entry"><a class="el" href="classzen_1_1_xml_out.html">zen::XmlOut</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="classzen_1_1_xml_out.html#aa80be3a56f70a58d2730a763166088c0">XmlOut</a>(XmlElement &element)</td><td class="entry"><a class="el" href="classzen_1_1_xml_out.html">zen::XmlOut</a></td><td class="entry"></td></tr> -</table></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/classzen_1_1_xml_out.html b/zenxml/doc/classzen_1_1_xml_out.html deleted file mode 100644 index 33434c67..00000000 --- a/zenxml/doc/classzen_1_1_xml_out.html +++ /dev/null @@ -1,303 +0,0 @@ -<!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>zen::Xml: zen::XmlOut Class Reference</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="namespacezen.html">zen</a></li><li class="navelem"><a class="el" href="classzen_1_1_xml_out.html">XmlOut</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-methods">Public Member Functions</a> | -<a href="classzen_1_1_xml_out-members.html">List of all members</a> </div> - <div class="headertitle"> -<div class="title">zen::XmlOut Class Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Proxy class to conveniently convert user data into XML structure. - <a href="classzen_1_1_xml_out.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="bind_8h_source.html">bind.h</a>></code></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> -Public Member Functions</h2></td></tr> -<tr class="memitem:ad8b1ccb8f3d4e7b0ab2598597ea50bcc"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_out.html#ad8b1ccb8f3d4e7b0ab2598597ea50bcc">XmlOut</a> (<a class="el" href="classzen_1_1_xml_doc.html">XmlDoc</a> &doc)</td></tr> -<tr class="memdesc:ad8b1ccb8f3d4e7b0ab2598597ea50bcc"><td class="mdescLeft"> </td><td class="mdescRight">Construct an output proxy for an XML document. <a href="#ad8b1ccb8f3d4e7b0ab2598597ea50bcc">More...</a><br/></td></tr> -<tr class="separator:ad8b1ccb8f3d4e7b0ab2598597ea50bcc"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aa80be3a56f70a58d2730a763166088c0"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_out.html#aa80be3a56f70a58d2730a763166088c0">XmlOut</a> (<a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> &element)</td></tr> -<tr class="memdesc:aa80be3a56f70a58d2730a763166088c0"><td class="mdescLeft"> </td><td class="mdescRight">Construct an output proxy for a single XML element. <a href="#aa80be3a56f70a58d2730a763166088c0">More...</a><br/></td></tr> -<tr class="separator:aa80be3a56f70a58d2730a763166088c0"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a00f883d3f9d60535b06b5ae609dc8831"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a00f883d3f9d60535b06b5ae609dc8831"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classzen_1_1_xml_out.html">XmlOut</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_out.html#a00f883d3f9d60535b06b5ae609dc8831">operator[]</a> (const String &name) const </td></tr> -<tr class="memdesc:a00f883d3f9d60535b06b5ae609dc8831"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve a handle to an XML child element for writing. <a href="#a00f883d3f9d60535b06b5ae609dc8831">More...</a><br/></td></tr> -<tr class="separator:a00f883d3f9d60535b06b5ae609dc8831"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a09ca9144515e3c109b36062b0475c8eb"><td class="memTemplParams" colspan="2">template<class T > </td></tr> -<tr class="memitem:a09ca9144515e3c109b36062b0475c8eb"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_out.html#a09ca9144515e3c109b36062b0475c8eb">operator()</a> (const T &value)</td></tr> -<tr class="memdesc:a09ca9144515e3c109b36062b0475c8eb"><td class="mdescLeft"> </td><td class="mdescRight">Write user data to the underlying XML element. <a href="#a09ca9144515e3c109b36062b0475c8eb">More...</a><br/></td></tr> -<tr class="separator:a09ca9144515e3c109b36062b0475c8eb"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:acaf9b71fe1d907dd63dd4b91e2e03805"><td class="memTemplParams" colspan="2">template<class String , class T > </td></tr> -<tr class="memitem:acaf9b71fe1d907dd63dd4b91e2e03805"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_out.html#acaf9b71fe1d907dd63dd4b91e2e03805">attribute</a> (const String &name, const T &value)</td></tr> -<tr class="memdesc:acaf9b71fe1d907dd63dd4b91e2e03805"><td class="mdescLeft"> </td><td class="mdescRight">Write user data to an XML attribute. <a href="#acaf9b71fe1d907dd63dd4b91e2e03805">More...</a><br/></td></tr> -<tr class="separator:acaf9b71fe1d907dd63dd4b91e2e03805"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aec117344e8a534382e8d5e76711f97b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec117344e8a534382e8d5e76711f97b2"></a> -<a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_out.html#aec117344e8a534382e8d5e76711f97b2">ref</a> ()</td></tr> -<tr class="memdesc:aec117344e8a534382e8d5e76711f97b2"><td class="mdescLeft"> </td><td class="mdescRight">Return a reference to the underlying Xml element. <br/></td></tr> -<tr class="separator:aec117344e8a534382e8d5e76711f97b2"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Proxy class to conveniently convert user data into XML structure. </p> -</div><h2 class="groupheader">Constructor & Destructor Documentation</h2> -<a class="anchor" id="ad8b1ccb8f3d4e7b0ab2598597ea50bcc"></a> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">zen::XmlOut::XmlOut </td> - <td>(</td> - <td class="paramtype"><a class="el" href="classzen_1_1_xml_doc.html">XmlDoc</a> & </td> - <td class="paramname"><em>doc</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Construct an output proxy for an XML document. </p> -<div class="fragment"><div class="line"><a class="code" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a> doc;</div> -<div class="line"></div> -<div class="line"><a class="code" href="classzen_1_1_xml_out.html">zen::XmlOut</a> out(doc);</div> -<div class="line">out[<span class="stringliteral">"elem1"</span>]( 1); <span class="comment">//</span></div> -<div class="line">out[<span class="stringliteral">"elem2"</span>]( 2); <span class="comment">//write data into XML elements</span></div> -<div class="line">out[<span class="stringliteral">"elem3"</span>](-3); <span class="comment">//</span></div> -<div class="line"></div> -<div class="line"><a class="code" href="namespacezen.html#adeeb6b2318097382ae47aa939fc15d4d">save</a>(doc, <span class="stringliteral">"out.xml"</span>); <span class="comment">//throw XmlFileError</span></div> -</div><!-- fragment --><p> Output: </p> -<pre class="fragment"><?xml version="1.0" encoding="UTF-8"?> -<Root> - <elem1>1</elem1> - <elem2>2</elem2> - <elem3>-3</elem3> -</Root> -</pre> -</div> -</div> -<a class="anchor" id="aa80be3a56f70a58d2730a763166088c0"></a> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">zen::XmlOut::XmlOut </td> - <td>(</td> - <td class="paramtype"><a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> & </td> - <td class="paramname"><em>element</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Construct an output proxy for a single XML element. </p> -<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classzen_1_1_xml_out.html#ad8b1ccb8f3d4e7b0ab2598597ea50bcc" title="Construct an output proxy for an XML document. ">XmlOut(XmlDoc& doc)</a> </dd></dl> - -</div> -</div> -<h2 class="groupheader">Member Function Documentation</h2> -<a class="anchor" id="acaf9b71fe1d907dd63dd4b91e2e03805"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String , class T > </div> - <table class="memname"> - <tr> - <td class="memname">void zen::XmlOut::attribute </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>name</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const T & </td> - <td class="paramname"><em>value</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Write user data to an XML attribute. </p> -<p>This conversion requires a specialization of <a class="el" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f" title="Convert user data into text - used by XML elements and attributes. ">zen::writeText()</a> for type T. </p> -<div class="fragment"><div class="line"><a class="code" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a> doc;</div> -<div class="line"></div> -<div class="line"><a class="code" href="classzen_1_1_xml_out.html">zen::XmlOut</a> out(doc);</div> -<div class="line">out[<span class="stringliteral">"elem"</span>].attribute(<span class="stringliteral">"attr1"</span>, 1); <span class="comment">//</span></div> -<div class="line">out[<span class="stringliteral">"elem"</span>].attribute(<span class="stringliteral">"attr2"</span>, 2); <span class="comment">//write data into XML attributes</span></div> -<div class="line">out[<span class="stringliteral">"elem"</span>].attribute(<span class="stringliteral">"attr3"</span>, -3); <span class="comment">//</span></div> -<div class="line"></div> -<div class="line"><a class="code" href="namespacezen.html#adeeb6b2318097382ae47aa939fc15d4d">save</a>(doc, <span class="stringliteral">"out.xml"</span>); <span class="comment">//throw XmlFileError</span></div> -</div><!-- fragment --><p> Output: </p> -<pre class="fragment"> <?xml version="1.0" encoding="UTF-8"?> - <Root> - <elem attr1="1" attr2="2" attr3="-3"/> - </Root></pre><dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - <tr><td class="paramname">T</td><td>String-convertible user data type: e.g. any string-like type, all built-in arithmetic numbers </td></tr> - </table> - </dd> -</dl> -<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classzen_1_1_xml_element.html#a211a6f037c22a54d3facb7a8347a8421" title="Create or update an XML attribute. ">XmlElement::setAttribute()</a> </dd></dl> - -</div> -</div> -<a class="anchor" id="a09ca9144515e3c109b36062b0475c8eb"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class T > </div> - <table class="memname"> - <tr> - <td class="memname">void zen::XmlOut::operator() </td> - <td>(</td> - <td class="paramtype">const T & </td> - <td class="paramname"><em>value</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Write user data to the underlying XML element. </p> -<p>This conversion requires a specialization of <a class="el" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f" title="Convert user data into text - used by XML elements and attributes. ">zen::writeText()</a> or <a class="el" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6" title="Convert structured user data into an XML element. ">zen::writeStruc()</a> for type T. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">T</td><td>User type that is converted into an XML element value. </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a class="anchor" id="a00f883d3f9d60535b06b5ae609dc8831"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="classzen_1_1_xml_out.html">XmlOut</a> zen::XmlOut::operator[] </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>name</em></td><td>)</td> - <td> const</td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Retrieve a handle to an XML child element for writing. </p> -<p>The child element will be created if it is not yet existing. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">name</td><td>The name of the child element </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/closed.png b/zenxml/doc/closed.png Binary files differdeleted file mode 100644 index 98cc2c90..00000000 --- a/zenxml/doc/closed.png +++ /dev/null diff --git a/zenxml/doc/cvrt__struc_8h_source.html b/zenxml/doc/cvrt__struc_8h_source.html deleted file mode 100644 index 2a229c26..00000000 --- a/zenxml/doc/cvrt__struc_8h_source.html +++ /dev/null @@ -1,295 +0,0 @@ -<!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>zen::Xml: cvrt_struc.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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_5fe60cdff4f93e8435d81ae38a3e2e18.html">zenxml</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">cvrt_struc.h</div> </div> -</div><!--header--> -<div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// * This file is part of the FreeFileSync project. It is distributed under *</span></div> -<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *</span></div> -<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved *</span></div> -<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div> -<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#ifndef ZEN_XML_CONVERT_STRUC_HEADER_018727409908342709743</span></div> -<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor"></span><span class="preprocessor">#define ZEN_XML_CONVERT_STRUC_HEADER_018727409908342709743</span></div> -<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor"></span></div> -<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "dom.h"</span></div> -<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div> -<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="keyword">namespace </span>zen</div> -<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> {</div> -<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div> -<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keywordtype">bool</span> <a class="code" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">readStruc</a>(<span class="keyword">const</span> XmlElement& input, T& value);</div> -<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div> -<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keywordtype">void</span> <a class="code" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">writeStruc</a>(<span class="keyword">const</span> T& value, XmlElement& output);</div> -<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div> -<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div> -<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div> -<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div> -<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div> -<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div> -<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div> -<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div> -<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div> -<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div> -<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div> -<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div> -<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div> -<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div> -<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div> -<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div> -<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div> -<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">//------------------------------ implementation -------------------------------------</span></div> -<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">namespace </span>impl_2384343</div> -<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> {</div> -<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> ZEN_INIT_DETECT_MEMBER_TYPE(value_type);</div> -<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> ZEN_INIT_DETECT_MEMBER_TYPE(iterator);</div> -<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> ZEN_INIT_DETECT_MEMBER_TYPE(const_iterator);</div> -<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div> -<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> ZEN_INIT_DETECT_MEMBER(begin) <span class="comment">//</span></div> -<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> ZEN_INIT_DETECT_MEMBER(end) <span class="comment">//we don't know the exact declaration of the member attribute: may be in a base class!</span></div> -<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> ZEN_INIT_DETECT_MEMBER(insert) <span class="comment">//</span></div> -<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div> -<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div> -<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> template <typename T></div> -<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> struct IsStlContainer :</div> -<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  StaticBool<</div> -<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  impl_2384343::HasMemberType_value_type <T>::value&&</div> -<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  impl_2384343::HasMemberType_iterator <T>::value&&</div> -<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  impl_2384343::HasMemberType_const_iterator<T>::value&&</div> -<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  impl_2384343::HasMember_begin <T>::value&&</div> -<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  impl_2384343::HasMember_end <T>::value&&</div> -<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  impl_2384343::HasMember_insert <T>::value> {};</div> -<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div> -<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div> -<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="keyword">namespace </span>impl_2384343</div> -<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> {</div> -<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> ZEN_INIT_DETECT_MEMBER_TYPE(first_type);</div> -<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> ZEN_INIT_DETECT_MEMBER_TYPE(second_type);</div> -<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div> -<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> ZEN_INIT_DETECT_MEMBER(first) <span class="comment">//we don't know the exact declaration of the member attribute: may be in a base class!</span></div> -<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> ZEN_INIT_DETECT_MEMBER(second) <span class="comment">//</span></div> -<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> }</div> -<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div> -<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> template <typename T></div> -<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> struct IsStlPair :</div> -<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  StaticBool<</div> -<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  impl_2384343::HasMemberType_first_type <T>::value&&</div> -<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  impl_2384343::HasMemberType_second_type<T>::value&&</div> -<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  impl_2384343::HasMember_first <T>::value&&</div> -<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  impl_2384343::HasMember_second <T>::value> {};</div> -<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div> -<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">//######################################################################################</span></div> -<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div> -<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">//Conversion from arbitrary types to an XML element</span></div> -<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">enum</span> ValueType</div> -<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> {</div> -<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  VALUE_TYPE_STL_CONTAINER,</div> -<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  VALUE_TYPE_STL_PAIR,</div> -<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  VALUE_TYPE_OTHER,</div> -<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> };</div> -<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div> -<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div> -<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword">struct </span>GetValueType : StaticEnum<ValueType,</div> -<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  GetTextType<T>::value != TEXT_TYPE_OTHER ? VALUE_TYPE_OTHER : <span class="comment">//some string classes are also STL containers, so check this first</span></div> -<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  IsStlContainer<T>::value ? VALUE_TYPE_STL_CONTAINER :</div> -<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  IsStlPair<T>::value ? VALUE_TYPE_STL_PAIR :</div> -<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  VALUE_TYPE_OTHER> {};</div> -<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div> -<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div> -<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keyword">template</span> <<span class="keyword">class</span> T, ValueType type></div> -<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="keyword">struct </span>ConvertElement;</div> -<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">/* -> expected interface</span></div> -<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">{</span></div> -<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment"> void writeStruc(const T& value, XmlElement& output) const;</span></div> -<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment"> bool readStruc(const XmlElement& input, T& value) const;</span></div> -<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">};</span></div> -<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment">*/</span></div> -<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div> -<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div> -<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment">//partial specialization: handle conversion for all STL-container types!</span></div> -<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div> -<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword">struct </span>ConvertElement<T, VALUE_TYPE_STL_CONTAINER></div> -<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> {</div> -<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">void</span> <a class="code" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">writeStruc</a>(<span class="keyword">const</span> T& value, XmlElement& output)<span class="keyword"> const</span></div> -<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  std::for_each(value.begin(), value.end(),</div> -<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  [&](<span class="keyword">const</span> <span class="keyword">typename</span> T::value_type & childVal)</div> -<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div> -<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  XmlElement& newChild = output.addChild(<span class="stringliteral">"Item"</span>);</div> -<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">zen::writeStruc</a>(childVal, newChild);</div> -<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  });</div> -<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div> -<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordtype">bool</span> <a class="code" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">readStruc</a>(<span class="keyword">const</span> XmlElement& input, T& value)<span class="keyword"> const</span></div> -<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordtype">bool</span> success = <span class="keyword">true</span>;</div> -<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  value.clear();</div> -<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div> -<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">auto</span> iterPair = input.getChildren(<span class="stringliteral">"Item"</span>);</div> -<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> iter = iterPair.first; iter != iterPair.second; ++iter)</div> -<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div> -<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keyword">typename</span> T::value_type childVal; <span class="comment">//MSVC 2010 bug: cannot put this into a lambda body</span></div> -<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">zen::readStruc</a>(*iter, childVal))</div> -<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  value.insert(value.end(), childVal);</div> -<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">else</span></div> -<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  success = <span class="keyword">false</span>;</div> -<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div> -<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> success;</div> -<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div> -<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> };</div> -<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div> -<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div> -<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment">//partial specialization: handle conversion for std::pair</span></div> -<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div> -<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="keyword">struct </span>ConvertElement<T, VALUE_TYPE_STL_PAIR></div> -<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> {</div> -<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordtype">void</span> <a class="code" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">writeStruc</a>(<span class="keyword">const</span> T& value, XmlElement& output)<span class="keyword"> const</span></div> -<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  XmlElement& child1 = output.addChild(<span class="stringliteral">"one"</span>); <span class="comment">//don't use "1st/2nd", this will confuse a few pedantic XML parsers</span></div> -<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">zen::writeStruc</a>(value.first, child1);</div> -<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div> -<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  XmlElement& child2 = output.addChild(<span class="stringliteral">"two"</span>);</div> -<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">zen::writeStruc</a>(value.second, child2);</div> -<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div> -<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordtype">bool</span> <a class="code" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">readStruc</a>(<span class="keyword">const</span> XmlElement& input, T& value)<span class="keyword"> const</span></div> -<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">bool</span> success = <span class="keyword">true</span>;</div> -<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">const</span> XmlElement* child1 = input.getChild(<span class="stringliteral">"one"</span>);</div> -<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">if</span> (!child1 || !<a class="code" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">zen::readStruc</a>(*child1, value.first))</div> -<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  success = <span class="keyword">false</span>;</div> -<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div> -<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">const</span> XmlElement* child2 = input.getChild(<span class="stringliteral">"two"</span>);</div> -<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span> (!child2 || !<a class="code" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">zen::readStruc</a>(*child2, value.second))</div> -<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  success = <span class="keyword">false</span>;</div> -<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div> -<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> success;</div> -<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div> -<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> };</div> -<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div> -<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div> -<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="comment">//partial specialization: not a pure structured type, try text conversion (thereby respect user specializations of writeText()/readText())</span></div> -<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div> -<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="keyword">struct </span>ConvertElement<T, VALUE_TYPE_OTHER></div> -<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> {</div> -<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordtype">void</span> <a class="code" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">writeStruc</a>(<span class="keyword">const</span> T& value, XmlElement& output)<span class="keyword"> const</span></div> -<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  std::string tmp;</div> -<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">writeText</a>(value, tmp);</div> -<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  output.setValue(tmp);</div> -<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div> -<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordtype">bool</span> <a class="code" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">readStruc</a>(<span class="keyword">const</span> XmlElement& input, T& value)<span class="keyword"> const</span></div> -<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  std::string rawStr;</div> -<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  input.getValue(rawStr);</div> -<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> <a class="code" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">readText</a>(rawStr, value);</div> -<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div> -<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> };</div> -<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div> -<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div> -<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">inline</span></div> -<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6"> 198</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">writeStruc</a>(<span class="keyword">const</span> T& value, <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>& output)</div> -<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> {</div> -<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  ConvertElement<T, GetValueType<T>::value>().<a class="code" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">writeStruc</a>(value, output);</div> -<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div> -<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div> -<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div> -<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">inline</span></div> -<div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1"> 205</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">readStruc</a>(<span class="keyword">const</span> <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>& input, T& value)</div> -<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> {</div> -<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> ConvertElement<T, GetValueType<T>::value>().<a class="code" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">readStruc</a>(input, value);</div> -<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> }</div> -<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> }</div> -<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div> -<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="preprocessor">#endif //ZEN_XML_CONVERT_STRUC_HEADER_018727409908342709743</span></div> -<div class="ttc" id="namespacezen_html_acaf85ab94b61882f957afcd355386bff"><div class="ttname"><a href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">zen::readText</a></div><div class="ttdeci">bool readText(const std::string &input, T &value)</div><div class="ttdoc">Convert text to user data - used by XML elements and attributes. </div><div class="ttdef"><b>Definition:</b> cvrt_text.h:216</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html"><div class="ttname"><a href="classzen_1_1_xml_element.html">zen::XmlElement</a></div><div class="ttdoc">An XML element. </div><div class="ttdef"><b>Definition:</b> dom.h:21</div></div> -<div class="ttc" id="namespacezen_html_a2bdcecfe7435ef11cedbce47d4e72ee1"><div class="ttname"><a href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">zen::readStruc</a></div><div class="ttdeci">bool readStruc(const XmlElement &input, T &value)</div><div class="ttdoc">Convert XML element to structured user data. </div><div class="ttdef"><b>Definition:</b> cvrt_struc.h:205</div></div> -<div class="ttc" id="namespacezen_html_a29ddb823fe0a195f19a64448881b8bf6"><div class="ttname"><a href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">zen::writeStruc</a></div><div class="ttdeci">void writeStruc(const T &value, XmlElement &output)</div><div class="ttdoc">Convert structured user data into an XML element. </div><div class="ttdef"><b>Definition:</b> cvrt_struc.h:198</div></div> -<div class="ttc" id="namespacezen_html_a2ce2998296871fc2f4718ceceb22a23f"><div class="ttname"><a href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">zen::writeText</a></div><div class="ttdeci">void writeText(const T &value, std::string &output)</div><div class="ttdoc">Convert user data into text - used by XML elements and attributes. </div><div class="ttdef"><b>Definition:</b> cvrt_text.h:209</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/cvrt__text_8h_source.html b/zenxml/doc/cvrt__text_8h_source.html deleted file mode 100644 index 707264ae..00000000 --- a/zenxml/doc/cvrt__text_8h_source.html +++ /dev/null @@ -1,263 +0,0 @@ -<!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>zen::Xml: cvrt_text.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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_5fe60cdff4f93e8435d81ae38a3e2e18.html">zenxml</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">cvrt_text.h</div> </div> -</div><!--header--> -<div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// * This file is part of the FreeFileSync project. It is distributed under *</span></div> -<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *</span></div> -<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved *</span></div> -<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div> -<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#ifndef ZEN_XML_CONVERT_TEXT_HEADER_018727339083427097434</span></div> -<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor"></span><span class="preprocessor">#define ZEN_XML_CONVERT_TEXT_HEADER_018727339083427097434</span></div> -<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor"></span></div> -<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <zen/utf.h></span></div> -<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include <zen/string_tools.h></span></div> -<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div> -<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="keyword">namespace </span>zen</div> -<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> {</div> -<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div> -<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keywordtype">bool</span> <a class="code" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">readText</a>(<span class="keyword">const</span> std::string& input, T& value);</div> -<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div> -<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keywordtype">void</span> <a class="code" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">writeText</a>(<span class="keyword">const</span> T& value, std::string& output);</div> -<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div> -<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div> -<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">/* Different classes of data types:</span></div> -<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment"></span></div> -<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">-----------------------------</span></div> -<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">| structured | readStruc/writeStruc - e.g. string-convertible types, STL containers, std::pair, structured user types</span></div> -<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">| ------------------------- |</span></div> -<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">| | to-string-convertible | | readText/writeText - e.g. string-like types, all built-in arithmetic numbers, bool</span></div> -<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">| | --------------- | |</span></div> -<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">| | | string-like | | | utfCvrtTo - e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ...</span></div> -<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment">| | --------------- | |</span></div> -<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment">| ------------------------- |</span></div> -<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">-----------------------------</span></div> -<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment">*/</span></div> -<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div> -<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div> -<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div> -<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div> -<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div> -<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div> -<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div> -<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div> -<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div> -<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div> -<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div> -<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div> -<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div> -<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div> -<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div> -<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment">//------------------------------ implementation -------------------------------------</span></div> -<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div> -<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">//Conversion from arbitrary types to text (for use with XML elements and attributes)</span></div> -<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="keyword">enum</span> TextType</div> -<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> {</div> -<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  TEXT_TYPE_BOOL,</div> -<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  TEXT_TYPE_NUMBER,</div> -<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  TEXT_TYPE_STRING,</div> -<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  TEXT_TYPE_OTHER,</div> -<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> };</div> -<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div> -<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div> -<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="keyword">struct </span>GetTextType : StaticEnum<TextType,</div> -<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  IsSameType<T, bool>::value ? TEXT_TYPE_BOOL :</div> -<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  IsStringLike<T>::value ? TEXT_TYPE_STRING : <span class="comment">//string before number to correctly handle char/wchar_t -> this was an issue with Loki only!</span></div> -<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  IsArithmetic<T>::value ? TEXT_TYPE_NUMBER : <span class="comment">//</span></div> -<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  TEXT_TYPE_OTHER> {};</div> -<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div> -<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment">//######################################################################################</span></div> -<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div> -<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="keyword">template</span> <<span class="keyword">class</span> T, TextType type></div> -<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keyword">struct </span>ConvertText;</div> -<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment">/* -> expected interface</span></div> -<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment">{</span></div> -<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment"> void writeText(const T& value, std::string& output) const;</span></div> -<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="comment"> bool readText(const std::string& input, T& value) const;</span></div> -<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="comment">};</span></div> -<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="comment">*/</span></div> -<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div> -<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="comment">//partial specialization: type bool</span></div> -<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div> -<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keyword">struct </span>ConvertText<T, TEXT_TYPE_BOOL></div> -<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div> -<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">void</span> <a class="code" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">writeText</a>(<span class="keywordtype">bool</span> value, std::string& output)<span class="keyword"> const</span></div> -<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  output = value ? <span class="stringliteral">"true"</span> : <span class="stringliteral">"false"</span>;</div> -<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div> -<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">bool</span> <a class="code" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">readText</a>(<span class="keyword">const</span> std::string& input, <span class="keywordtype">bool</span>& value)<span class="keyword"> const</span></div> -<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  std::string tmp = input;</div> -<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  zen::trim(tmp);</div> -<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span> (tmp == <span class="stringliteral">"true"</span>)</div> -<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  value = <span class="keyword">true</span>;</div> -<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tmp == <span class="stringliteral">"false"</span>)</div> -<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  value = <span class="keyword">false</span>;</div> -<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">else</span></div> -<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> -<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> -<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div> -<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> };</div> -<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div> -<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="comment">//partial specialization: handle conversion for all built-in arithmetic types!</span></div> -<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div> -<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="keyword">struct </span>ConvertText<T, TEXT_TYPE_NUMBER></div> -<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> {</div> -<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordtype">void</span> <a class="code" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">writeText</a>(<span class="keyword">const</span> T& value, std::string& output)<span class="keyword"> const</span></div> -<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  output = numberTo<std::string>(value);</div> -<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div> -<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordtype">bool</span> <a class="code" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">readText</a>(<span class="keyword">const</span> std::string& input, T& value)<span class="keyword"> const</span></div> -<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  value = stringTo<T>(input);</div> -<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> -<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div> -<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> };</div> -<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div> -<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="comment">//partial specialization: handle conversion for all string-like types!</span></div> -<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div> -<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keyword">struct </span>ConvertText<T, TEXT_TYPE_STRING></div> -<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> {</div> -<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordtype">void</span> <a class="code" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">writeText</a>(<span class="keyword">const</span> T& value, std::string& output)<span class="keyword"> const</span></div> -<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  output = utfCvrtTo<std::string>(value);</div> -<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div> -<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordtype">bool</span> <a class="code" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">readText</a>(<span class="keyword">const</span> std::string& input, T& value)<span class="keyword"> const</span></div> -<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  value = utfCvrtTo<T>(input);</div> -<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> -<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div> -<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> };</div> -<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div> -<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div> -<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="comment">//partial specialization: unknown type</span></div> -<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div> -<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="keyword">struct </span>ConvertText<T, TEXT_TYPE_OTHER></div> -<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> {</div> -<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="comment">//###########################################################################################################################################</span></div> -<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  assert_static(<span class="keyword">sizeof</span>(T) == -1);</div> -<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">/*</span></div> -<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="comment"> ATTENTION: The data type T is yet unknown to the zen::Xml framework!</span></div> -<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="comment"></span></div> -<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="comment"> Please provide a specialization for T of the following two functions in order to handle conversions to XML elements and attributes</span></div> -<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="comment"></span></div> -<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="comment"> template <> void zen::writeText(const T& value, std::string& output)</span></div> -<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="comment"> template <> bool zen::readText(const std::string& input, T& value)</span></div> -<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="comment"></span></div> -<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="comment"> If T is structured and cannot be converted to a text representation specialize these two functions to allow at least for conversions to XML elements:</span></div> -<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="comment"></span></div> -<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="comment"> template <> void zen::writeStruc(const T& value, XmlElement& output)</span></div> -<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="comment"> template <> bool zen::readStruc(const XmlElement& input, T& value)</span></div> -<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="comment"> */</span></div> -<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">//###########################################################################################################################################</span></div> -<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> };</div> -<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div> -<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div> -<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">inline</span></div> -<div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f"> 209</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">writeText</a>(<span class="keyword">const</span> T& value, std::string& output)</div> -<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> {</div> -<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  ConvertText<T, GetTextType<T>::value>().<a class="code" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">writeText</a>(value, output);</div> -<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> }</div> -<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div> -<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div> -<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">inline</span></div> -<div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff"> 216</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">readText</a>(<span class="keyword">const</span> std::string& input, T& value)</div> -<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> {</div> -<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">return</span> ConvertText<T, GetTextType<T>::value>().<a class="code" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">readText</a>(input, value);</div> -<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> }</div> -<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> }</div> -<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div> -<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="preprocessor">#endif //ZEN_XML_CONVERT_TEXT_HEADER_018727339083427097434</span></div> -<div class="ttc" id="namespacezen_html_acaf85ab94b61882f957afcd355386bff"><div class="ttname"><a href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">zen::readText</a></div><div class="ttdeci">bool readText(const std::string &input, T &value)</div><div class="ttdoc">Convert text to user data - used by XML elements and attributes. </div><div class="ttdef"><b>Definition:</b> cvrt_text.h:216</div></div> -<div class="ttc" id="namespacezen_html_a2ce2998296871fc2f4718ceceb22a23f"><div class="ttname"><a href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">zen::writeText</a></div><div class="ttdeci">void writeText(const T &value, std::string &output)</div><div class="ttdoc">Convert user data into text - used by XML elements and attributes. </div><div class="ttdef"><b>Definition:</b> cvrt_text.h:209</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/dom_8h_source.html b/zenxml/doc/dom_8h_source.html deleted file mode 100644 index 1b1e1e32..00000000 --- a/zenxml/doc/dom_8h_source.html +++ /dev/null @@ -1,375 +0,0 @@ -<!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>zen::Xml: dom.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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_5fe60cdff4f93e8435d81ae38a3e2e18.html">zenxml</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">dom.h</div> </div> -</div><!--header--> -<div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// * This file is part of the FreeFileSync project. It is distributed under *</span></div> -<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *</span></div> -<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved *</span></div> -<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div> -<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#ifndef ZEN_XML_DOM_HEADER_82085720723894567204564256</span></div> -<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor"></span><span class="preprocessor">#define ZEN_XML_DOM_HEADER_82085720723894567204564256</span></div> -<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor"></span></div> -<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <string></span></div> -<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include <vector></span></div> -<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include <memory></span></div> -<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include <map></span></div> -<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "cvrt_text.h"</span> <span class="comment">//"readText/writeText"</span></div> -<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div> -<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">namespace </span>zen</div> -<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> {</div> -<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">class </span>XmlDoc;</div> -<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div> -<div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html"> 21</a></span> <span class="keyword">class </span><a class="code" href="classzen_1_1_xml_element.html">XmlElement</a></div> -<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div> -<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keyword">struct </span>PrivateConstruction {};</div> -<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">public</span>:</div> -<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="comment">//Construct an empty XML element</span></div> -<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="comment">//This constructor should be private, however std::make_shared() requires public access</span></div> -<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="comment">//Therefore at least prevent users from calling it via private dummy type PrivateConstruction</span></div> -<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>(<span class="keyword">const</span> String& name, <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>* parentElement, PrivateConstruction) : name_(utfCvrtTo<std::string>(name)), parent_(parentElement) {}</div> -<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div> -<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div> -<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html#a7c911eb06a59c864197b1a4098728e50"> 37</a></span>  String <a class="code" href="classzen_1_1_xml_element.html#a7c911eb06a59c864197b1a4098728e50">getNameAs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> utfCvrtTo<String>(name_); }</div> -<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div> -<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div> -<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">template</span> <<span class="keyword">class</span> T></div> -<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html#a5ac9d586a5668c2c64e3c06c6203b070"> 45</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classzen_1_1_xml_element.html#a5ac9d586a5668c2c64e3c06c6203b070">getValue</a>(T& value)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">readStruc</a>(*<span class="keyword">this</span>, value); }</div> -<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div> -<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div> -<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">template</span> <<span class="keyword">class</span> T></div> -<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html#aaf3a26f6199fc88cce7d9d911ba21b01"> 52</a></span>  <span class="keywordtype">void</span> <a class="code" href="classzen_1_1_xml_element.html#aaf3a26f6199fc88cce7d9d911ba21b01">setValue</a>(<span class="keyword">const</span> T& value) { <a class="code" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">writeStruc</a>(value, *<span class="keyword">this</span>); }</div> -<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div> -<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div> -<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String, <span class="keyword">class</span> T></div> -<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html#af90ac6f435b03ba37cf47ee188c58887"> 63</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classzen_1_1_xml_element.html#af90ac6f435b03ba37cf47ee188c58887">getAttribute</a>(<span class="keyword">const</span> String& name, T& value)<span class="keyword"> const</span></div> -<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">auto</span> it = attributes.find(utfCvrtTo<std::string>(name));</div> -<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">return</span> it == attributes.end() ? <span class="keyword">false</span> : <a class="code" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">readText</a>(it->second, value);</div> -<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div> -<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div> -<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div> -<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String, <span class="keyword">class</span> T></div> -<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html#a211a6f037c22a54d3facb7a8347a8421"> 77</a></span>  <span class="keywordtype">void</span> <a class="code" href="classzen_1_1_xml_element.html#a211a6f037c22a54d3facb7a8347a8421">setAttribute</a>(<span class="keyword">const</span> String& name, <span class="keyword">const</span> T& value)</div> -<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div> -<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  std::string attrValue;</div> -<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">writeText</a>(value, attrValue);</div> -<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  attributes[utfCvrtTo<std::string>(name)] = attrValue;</div> -<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div> -<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div> -<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div> -<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html#ad9c2ce2e55294c8110825988595e3934"> 89</a></span>  <span class="keywordtype">void</span> <a class="code" href="classzen_1_1_xml_element.html#ad9c2ce2e55294c8110825988595e3934">removeAttribute</a>(<span class="keyword">const</span> String& name) { attributes.erase(utfCvrtTo<std::string>(name)); }</div> -<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div> -<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div> -<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html#a653caffa6fad89db7d14f67f987ad0f9"> 97</a></span>  <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>& <a class="code" href="classzen_1_1_xml_element.html#a653caffa6fad89db7d14f67f987ad0f9">addChild</a>(<span class="keyword">const</span> String& name)</div> -<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div> -<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  std::string utf8Name = utfCvrtTo<std::string>(name);</div> -<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">auto</span> newElement = std::make_shared<XmlElement>(utf8Name, <span class="keyword">this</span>, PrivateConstruction());</div> -<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  childElements.push_back(newElement);</div> -<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  childElementsSorted.insert(std::make_pair(utf8Name, newElement));</div> -<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> *newElement;</div> -<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div> -<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div> -<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div> -<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html#a3ab82b1720460487f4afabcd115d0c7e"> 113</a></span>  <span class="keyword">const</span> <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>* <a class="code" href="classzen_1_1_xml_element.html#a3ab82b1720460487f4afabcd115d0c7e">getChild</a>(<span class="keyword">const</span> String& name)<span class="keyword"> const</span></div> -<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">auto</span> it = childElementsSorted.find(utfCvrtTo<std::string>(name));</div> -<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">return</span> it == childElementsSorted.end() ? <span class="keyword">nullptr</span> : &*(it->second);</div> -<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div> -<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div> -<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html#a5d672e8ccc7592442ab927bb267af658"> 121</a></span>  <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>* <a class="code" href="classzen_1_1_xml_element.html#a5d672e8ccc7592442ab927bb267af658">getChild</a>(<span class="keyword">const</span> String& name)</div> -<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div> -<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>*<span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classzen_1_1_xml_element.html#a3ab82b1720460487f4afabcd115d0c7e">getChild</a>(name));</div> -<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div> -<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div> -<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">template</span> < <span class="keyword">class </span>IterTy, <span class="comment">//underlying iterator type</span></div> -<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">class </span>T, <span class="comment">//target object type</span></div> -<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">class </span>AccessPolicy > <span class="comment">//access policy: see AccessPtrMap</span></div> -<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">class </span>PtrIter : <span class="keyword">public</span> std::iterator<std::input_iterator_tag, T>, <span class="keyword">private</span> AccessPolicy <span class="comment">//get rid of shared_ptr indirection</span></div> -<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div> -<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">public</span>:</div> -<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  PtrIter(IterTy it) : it_(it) {}</div> -<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  PtrIter(<span class="keyword">const</span> PtrIter& other) : it_(other.it_) {}</div> -<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  PtrIter& operator++() { ++it_; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div> -<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  PtrIter operator++(<span class="keywordtype">int</span>) { PtrIter tmp(*<span class="keyword">this</span>); operator++(); <span class="keywordflow">return</span> tmp; }</div> -<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">inline</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> PtrIter& lhs, <span class="keyword">const</span> PtrIter& rhs) { <span class="keywordflow">return</span> lhs.it_ == rhs.it_; }</div> -<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">inline</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> PtrIter& lhs, <span class="keyword">const</span> PtrIter& rhs) { <span class="keywordflow">return</span> !(lhs == rhs); }</div> -<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  T& operator* () { <span class="keywordflow">return</span> AccessPolicy::template objectRef<T>(it_); }</div> -<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  T* operator->() { <span class="keywordflow">return</span> &AccessPolicy::template objectRef<T>(it_); }</div> -<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">private</span>:</div> -<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  IterTy it_;</div> -<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  };</div> -<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div> -<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">struct </span>AccessPtrMap</div> -<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  {</div> -<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> IterTy></div> -<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  T& objectRef(<span class="keyword">const</span> IterTy& it) { <span class="keywordflow">return</span> *(it->second); }</div> -<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  };</div> -<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div> -<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">typedef</span> PtrIter<std::multimap<std::string, std::shared_ptr<XmlElement>>::iterator, XmlElement, AccessPtrMap> ChildIter2;</div> -<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keyword">typedef</span> PtrIter<std::multimap<std::string, std::shared_ptr<XmlElement>>::const_iterator, <span class="keyword">const</span> XmlElement, AccessPtrMap> ChildIterConst2;</div> -<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div> -<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div> -<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html#a2640b438c4984f5eeb8760d82d73c5b8"> 164</a></span>  std::pair<ChildIterConst2, ChildIterConst2> <a class="code" href="classzen_1_1_xml_element.html#a2640b438c4984f5eeb8760d82d73c5b8">getChildren</a>(<span class="keyword">const</span> String& name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> childElementsSorted.equal_range(utfCvrtTo<std::string>(name)); }</div> -<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div> -<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html#ae209dac9655bc36121abb87688ece41d"> 168</a></span>  std::pair<ChildIter2, ChildIter2> <a class="code" href="classzen_1_1_xml_element.html#ae209dac9655bc36121abb87688ece41d">getChildren</a>(<span class="keyword">const</span> String& name) { <span class="keywordflow">return</span> childElementsSorted.equal_range(utfCvrtTo<std::string>(name)); }</div> -<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div> -<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">struct </span>AccessPtrVec</div> -<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div> -<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> IterTy></div> -<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  T& objectRef(<span class="keyword">const</span> IterTy& it) { <span class="keywordflow">return</span> **it; }</div> -<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  };</div> -<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div> -<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">typedef</span> PtrIter<std::vector<std::shared_ptr<XmlElement>>::iterator, XmlElement, AccessPtrVec> ChildIter;</div> -<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">typedef</span> PtrIter<std::vector<std::shared_ptr<XmlElement>>::const_iterator, <span class="keyword">const</span> XmlElement, AccessPtrVec> ChildIterConst;</div> -<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div> -<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div> -<div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html#a55a6d1849490d82ae900cd9b923908f2"> 188</a></span>  std::pair<ChildIterConst, ChildIterConst> <a class="code" href="classzen_1_1_xml_element.html#a55a6d1849490d82ae900cd9b923908f2">getChildren</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> std::make_pair(childElements.begin(), childElements.end()); }</div> -<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div> -<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html#ac59268177d162931f937b6a7f235ad96"> 191</a></span>  std::pair<ChildIter, ChildIter> <a class="code" href="classzen_1_1_xml_element.html#ac59268177d162931f937b6a7f235ad96">getChildren</a>() { <span class="keywordflow">return</span> std::make_pair(childElements.begin(), childElements.end()); }</div> -<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div> -<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html#a4af309f59ef09f46a559f1f0e1eac6c1"> 194</a></span>  <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>* <a class="code" href="classzen_1_1_xml_element.html#a4af309f59ef09f46a559f1f0e1eac6c1">parent</a>() { <span class="keywordflow">return</span> parent_; };</div> -<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_element.html#a7ba1f26be5629f89ba7648d658f7058c"> 196</a></span>  <span class="keyword">const</span> <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>* <a class="code" href="classzen_1_1_xml_element.html#a7ba1f26be5629f89ba7648d658f7058c">parent</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parent_; };</div> -<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div> -<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div> -<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">typedef</span> std::map<std::string, std::string>::const_iterator AttrIter;</div> -<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div> -<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">/* -> disabled documentation extraction</span></div> -<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="comment"> \brief Get all attributes associated with the element.</span></div> -<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="comment"> \code</span></div> -<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="comment"> auto iterPair = elem.getAttributes();</span></div> -<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="comment"> for (auto it = iterPair.first; it != iterPair.second; ++it)</span></div> -<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="comment"> std::cout << "name: " << it->first << " value: " << it->second << "\n";</span></div> -<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="comment"> \endcode</span></div> -<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="comment"> \return A pair of STL begin/end iterators to access all attributes sequentially as a list of name/value pairs of std::string.</span></div> -<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="comment"> */</span></div> -<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  std::pair<AttrIter, AttrIter> getAttributes()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> std::make_pair(attributes.begin(), attributes.end()); }</div> -<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div> -<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">//Transactionally swap two elements. -> disabled documentation extraction</span></div> -<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordtype">void</span> swap(XmlElement& other)</div> -<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div> -<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  name_ .swap(other.name_);</div> -<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  value_ .swap(other.value_);</div> -<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  attributes.swap(other.attributes);</div> -<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  childElements.swap(other.childElements);</div> -<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  childElementsSorted.swap(other.childElementsSorted);</div> -<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="comment">//std::swap(parent_, other.parent_); -> parent is physical location; update children's parent reference instead:</span></div> -<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  std::for_each( childElements.begin(), childElements.end(), [&](<span class="keyword">const</span> std::shared_ptr<XmlElement>& child) { child->parent_ = <span class="keyword">this</span>; });</div> -<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  std::for_each(other.childElements.begin(), other.childElements.end(), [&](<span class="keyword">const</span> std::shared_ptr<XmlElement>& child) { child->parent_ = &other; });</div> -<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div> -<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div> -<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="keyword">private</span>:</div> -<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">friend</span> <span class="keyword">class </span>XmlDoc;</div> -<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div> -<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  XmlElement(<span class="keyword">const</span> XmlElement&); <span class="comment">//not implemented</span></div> -<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  XmlElement& operator=(<span class="keyword">const</span> XmlElement&); <span class="comment">//</span></div> -<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div> -<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  std::string name_;</div> -<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  std::string value_;</div> -<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  std::map<std::string, std::string> attributes;</div> -<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  std::vector<std::shared_ptr<XmlElement>> childElements; <span class="comment">//all child elements in order of creation</span></div> -<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  std::multimap<std::string, std::shared_ptr<XmlElement>> childElementsSorted; <span class="comment">//alternate key: sorted by element name</span></div> -<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  XmlElement* parent_;</div> -<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> };</div> -<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div> -<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div> -<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="comment">//XmlElement::setValue<T>() calls zen::writeStruc() which calls XmlElement::setValue() ... => these two specializations end the circle</span></div> -<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="keyword">template</span> <> <span class="keyword">inline</span></div> -<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="keywordtype">void</span> <a class="code" href="classzen_1_1_xml_element.html#aaf3a26f6199fc88cce7d9d911ba21b01">XmlElement::setValue</a>(<span class="keyword">const</span> std::string& value) { value_ = value; }</div> -<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div> -<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="keyword">template</span> <> <span class="keyword">inline</span></div> -<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="keywordtype">bool</span> <a class="code" href="classzen_1_1_xml_element.html#a5ac9d586a5668c2c64e3c06c6203b070">XmlElement::getValue</a>(std::string& value)<span class="keyword"> const </span>{ value = value_; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div> -<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div> -<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div> -<div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_doc.html"> 249</a></span> <span class="keyword">class </span><a class="code" href="classzen_1_1_xml_doc.html">XmlDoc</a></div> -<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> {</div> -<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="keyword">public</span>:</div> -<div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_doc.html#adbed9c31066d456a9cc8c610f15670ed"> 253</a></span>  <a class="code" href="classzen_1_1_xml_doc.html#adbed9c31066d456a9cc8c610f15670ed">XmlDoc</a>() : version_(<span class="stringliteral">"1.0"</span>), encoding_(<span class="stringliteral">"UTF-8"</span>), rootElement(<span class="stringliteral">"Root"</span>, nullptr, <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>::PrivateConstruction()) {}</div> -<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div> -<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="classzen_1_1_xml_doc.html#adbed9c31066d456a9cc8c610f15670ed">XmlDoc</a>(<a class="code" href="classzen_1_1_xml_doc.html">XmlDoc</a>&& tmp) : rootElement(<span class="stringliteral">"Root"</span>, nullptr, <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>::PrivateConstruction()) { swap(tmp); }</div> -<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="classzen_1_1_xml_doc.html#adbed9c31066d456a9cc8c610f15670ed">XmlDoc</a>& operator=(<a class="code" href="classzen_1_1_xml_doc.html#adbed9c31066d456a9cc8c610f15670ed">XmlDoc</a>&& tmp) { swap(tmp); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div> -<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div> -<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="comment">//Setup an empty XML document</span></div> -<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_doc.html#a74ff8434848672fe6483845d04c082df"> 264</a></span>  <a class="code" href="classzen_1_1_xml_doc.html#a74ff8434848672fe6483845d04c082df">XmlDoc</a>(String rootName) : version_(<span class="stringliteral">"1.0"</span>), encoding_(<span class="stringliteral">"UTF-8"</span>), rootElement(rootName, nullptr, <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>::PrivateConstruction()) {}</div> -<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div> -<div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_doc.html#ad4a9594d93885fc1a12db28e8246648d"> 267</a></span>  <span class="keyword">const</span> <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>& <a class="code" href="classzen_1_1_xml_doc.html#ad4a9594d93885fc1a12db28e8246648d">root</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> rootElement; }</div> -<div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_doc.html#a094e156f9d265443e52a527638e88a1e"> 269</a></span>  <a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>& <a class="code" href="classzen_1_1_xml_doc.html#a094e156f9d265443e52a527638e88a1e">root</a>() { <span class="keywordflow">return</span> rootElement; }</div> -<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div> -<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div> -<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_doc.html#a7f93dcdc00cdc8d98926cf8e47161665"> 276</a></span>  String <a class="code" href="classzen_1_1_xml_doc.html#a7f93dcdc00cdc8d98926cf8e47161665">getVersionAs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> utfCvrtTo<String>(version_); }</div> -<div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div> -<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div> -<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_doc.html#ab45914339c476e1da35746f5e00dbc64"> 283</a></span>  <span class="keywordtype">void</span> <a class="code" href="classzen_1_1_xml_doc.html#ab45914339c476e1da35746f5e00dbc64">setVersion</a>(<span class="keyword">const</span> String& version) { version_ = utfCvrtTo<std::string>(version); }</div> -<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div> -<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div> -<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_doc.html#a64ece4a1f3f8c802192b8f31506535da"> 290</a></span>  String <a class="code" href="classzen_1_1_xml_doc.html#a64ece4a1f3f8c802192b8f31506535da">getEncodingAs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> utfCvrtTo<String>(encoding_); }</div> -<div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div> -<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div> -<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_doc.html#a2ae30bca2f490479f58c272148935a62"> 297</a></span>  <span class="keywordtype">void</span> <a class="code" href="classzen_1_1_xml_doc.html#a2ae30bca2f490479f58c272148935a62">setEncoding</a>(<span class="keyword">const</span> String& encoding) { encoding_ = utfCvrtTo<std::string>(encoding); }</div> -<div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div> -<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div> -<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_doc.html#ac1bfb9776852dc8195b9ffb4f65452e4"> 304</a></span>  String <a class="code" href="classzen_1_1_xml_doc.html#ac1bfb9776852dc8195b9ffb4f65452e4">getStandaloneAs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> utfCvrtTo<String>(standalone_); }</div> -<div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div> -<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div> -<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classzen_1_1_xml_doc.html#a4c92f9b8c1bb47247b827d89794590d4"> 311</a></span>  <span class="keywordtype">void</span> <a class="code" href="classzen_1_1_xml_doc.html#a4c92f9b8c1bb47247b827d89794590d4">setStandalone</a>(<span class="keyword">const</span> String& standalone) { standalone_ = utfCvrtTo<std::string>(standalone); }</div> -<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div> -<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="comment">//Transactionally swap two elements. -> disabled documentation extraction</span></div> -<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordtype">void</span> swap(<a class="code" href="classzen_1_1_xml_doc.html">XmlDoc</a>& other)</div> -<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  {</div> -<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  version_ .swap(other.version_);</div> -<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  encoding_ .swap(other.encoding_);</div> -<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  standalone_.swap(other.standalone_);</div> -<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  rootElement.swap(other.rootElement);</div> -<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div> -<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div> -<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="keyword">private</span>:</div> -<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="classzen_1_1_xml_doc.html#adbed9c31066d456a9cc8c610f15670ed">XmlDoc</a>(<span class="keyword">const</span> <a class="code" href="classzen_1_1_xml_doc.html#adbed9c31066d456a9cc8c610f15670ed">XmlDoc</a>&); <span class="comment">//not implemented, thanks to XmlElement::parent_</span></div> -<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <a class="code" href="classzen_1_1_xml_doc.html#adbed9c31066d456a9cc8c610f15670ed">XmlDoc</a>& operator=(<span class="keyword">const</span> <a class="code" href="classzen_1_1_xml_doc.html#adbed9c31066d456a9cc8c610f15670ed">XmlDoc</a>&); <span class="comment">//</span></div> -<div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div> -<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  std::string version_;</div> -<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  std::string encoding_;</div> -<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  std::string standalone_;</div> -<div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div> -<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  XmlElement rootElement;</div> -<div class="line"><a name="l00331"></a><span class="lineno"> 331</span> };</div> -<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div> -<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> }</div> -<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div> -<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="preprocessor">#endif //ZEN_XML_DOM_HEADER_82085720723894567204564256</span></div> -<div class="ttc" id="classzen_1_1_xml_doc_html_ad4a9594d93885fc1a12db28e8246648d"><div class="ttname"><a href="classzen_1_1_xml_doc.html#ad4a9594d93885fc1a12db28e8246648d">zen::XmlDoc::root</a></div><div class="ttdeci">const XmlElement & root() const </div><div class="ttdoc">Get a const reference to the document's root element. </div><div class="ttdef"><b>Definition:</b> dom.h:267</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_a7ba1f26be5629f89ba7648d658f7058c"><div class="ttname"><a href="classzen_1_1_xml_element.html#a7ba1f26be5629f89ba7648d658f7058c">zen::XmlElement::parent</a></div><div class="ttdeci">const XmlElement * parent() const </div><div class="ttdoc">Get parent XML element, may be nullptr for root element. </div><div class="ttdef"><b>Definition:</b> dom.h:196</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_a5ac9d586a5668c2c64e3c06c6203b070"><div class="ttname"><a href="classzen_1_1_xml_element.html#a5ac9d586a5668c2c64e3c06c6203b070">zen::XmlElement::getValue</a></div><div class="ttdeci">bool getValue(T &value) const </div><div class="ttdoc">Get the value of this element as a user type. </div><div class="ttdef"><b>Definition:</b> dom.h:45</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_ad9c2ce2e55294c8110825988595e3934"><div class="ttname"><a href="classzen_1_1_xml_element.html#ad9c2ce2e55294c8110825988595e3934">zen::XmlElement::removeAttribute</a></div><div class="ttdeci">void removeAttribute(const String &name)</div><div class="ttdoc">Remove the attribute with the given name. </div><div class="ttdef"><b>Definition:</b> dom.h:89</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_a2640b438c4984f5eeb8760d82d73c5b8"><div class="ttname"><a href="classzen_1_1_xml_element.html#a2640b438c4984f5eeb8760d82d73c5b8">zen::XmlElement::getChildren</a></div><div class="ttdeci">std::pair< ChildIterConst2, ChildIterConst2 > getChildren(const String &name) const </div><div class="ttdoc">Access all child elements with the given name via STL iterators. </div><div class="ttdef"><b>Definition:</b> dom.h:164</div></div> -<div class="ttc" id="classzen_1_1_xml_doc_html_a2ae30bca2f490479f58c272148935a62"><div class="ttname"><a href="classzen_1_1_xml_doc.html#a2ae30bca2f490479f58c272148935a62">zen::XmlDoc::setEncoding</a></div><div class="ttdeci">void setEncoding(const String &encoding)</div><div class="ttdoc">Set the encoding used in the XML declaration. </div><div class="ttdef"><b>Definition:</b> dom.h:297</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_a55a6d1849490d82ae900cd9b923908f2"><div class="ttname"><a href="classzen_1_1_xml_element.html#a55a6d1849490d82ae900cd9b923908f2">zen::XmlElement::getChildren</a></div><div class="ttdeci">std::pair< ChildIterConst, ChildIterConst > getChildren() const </div><div class="ttdoc">Access all child elements sequentially via STL iterators. </div><div class="ttdef"><b>Definition:</b> dom.h:188</div></div> -<div class="ttc" id="namespacezen_html_acaf85ab94b61882f957afcd355386bff"><div class="ttname"><a href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">zen::readText</a></div><div class="ttdeci">bool readText(const std::string &input, T &value)</div><div class="ttdoc">Convert text to user data - used by XML elements and attributes. </div><div class="ttdef"><b>Definition:</b> cvrt_text.h:216</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html"><div class="ttname"><a href="classzen_1_1_xml_element.html">zen::XmlElement</a></div><div class="ttdoc">An XML element. </div><div class="ttdef"><b>Definition:</b> dom.h:21</div></div> -<div class="ttc" id="classzen_1_1_xml_doc_html_a74ff8434848672fe6483845d04c082df"><div class="ttname"><a href="classzen_1_1_xml_doc.html#a74ff8434848672fe6483845d04c082df">zen::XmlDoc::XmlDoc</a></div><div class="ttdeci">XmlDoc(String rootName)</div><div class="ttdef"><b>Definition:</b> dom.h:264</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_ac59268177d162931f937b6a7f235ad96"><div class="ttname"><a href="classzen_1_1_xml_element.html#ac59268177d162931f937b6a7f235ad96">zen::XmlElement::getChildren</a></div><div class="ttdeci">std::pair< ChildIter, ChildIter > getChildren()</div><div class="ttdef"><b>Definition:</b> dom.h:191</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_a5d672e8ccc7592442ab927bb267af658"><div class="ttname"><a href="classzen_1_1_xml_element.html#a5d672e8ccc7592442ab927bb267af658">zen::XmlElement::getChild</a></div><div class="ttdeci">XmlElement * getChild(const String &name)</div><div class="ttdef"><b>Definition:</b> dom.h:121</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_af90ac6f435b03ba37cf47ee188c58887"><div class="ttname"><a href="classzen_1_1_xml_element.html#af90ac6f435b03ba37cf47ee188c58887">zen::XmlElement::getAttribute</a></div><div class="ttdeci">bool getAttribute(const String &name, T &value) const </div><div class="ttdoc">Retrieve an attribute by name. </div><div class="ttdef"><b>Definition:</b> dom.h:63</div></div> -<div class="ttc" id="classzen_1_1_xml_doc_html_ab45914339c476e1da35746f5e00dbc64"><div class="ttname"><a href="classzen_1_1_xml_doc.html#ab45914339c476e1da35746f5e00dbc64">zen::XmlDoc::setVersion</a></div><div class="ttdeci">void setVersion(const String &version)</div><div class="ttdoc">Set the version used in the XML declaration. </div><div class="ttdef"><b>Definition:</b> dom.h:283</div></div> -<div class="ttc" id="classzen_1_1_xml_doc_html_a4c92f9b8c1bb47247b827d89794590d4"><div class="ttname"><a href="classzen_1_1_xml_doc.html#a4c92f9b8c1bb47247b827d89794590d4">zen::XmlDoc::setStandalone</a></div><div class="ttdeci">void setStandalone(const String &standalone)</div><div class="ttdoc">Set the standalone string used in the XML declaration. </div><div class="ttdef"><b>Definition:</b> dom.h:311</div></div> -<div class="ttc" id="classzen_1_1_xml_doc_html"><div class="ttname"><a href="classzen_1_1_xml_doc.html">zen::XmlDoc</a></div><div class="ttdoc">The complete XML document. </div><div class="ttdef"><b>Definition:</b> dom.h:249</div></div> -<div class="ttc" id="classzen_1_1_xml_doc_html_adbed9c31066d456a9cc8c610f15670ed"><div class="ttname"><a href="classzen_1_1_xml_doc.html#adbed9c31066d456a9cc8c610f15670ed">zen::XmlDoc::XmlDoc</a></div><div class="ttdeci">XmlDoc()</div><div class="ttdoc">Default constructor setting up an empty XML document with a standard declaration: <...</div><div class="ttdef"><b>Definition:</b> dom.h:253</div></div> -<div class="ttc" id="classzen_1_1_xml_doc_html_a64ece4a1f3f8c802192b8f31506535da"><div class="ttname"><a href="classzen_1_1_xml_doc.html#a64ece4a1f3f8c802192b8f31506535da">zen::XmlDoc::getEncodingAs</a></div><div class="ttdeci">String getEncodingAs() const </div><div class="ttdoc">Get the encoding used in the XML declaration. </div><div class="ttdef"><b>Definition:</b> dom.h:290</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_a653caffa6fad89db7d14f67f987ad0f9"><div class="ttname"><a href="classzen_1_1_xml_element.html#a653caffa6fad89db7d14f67f987ad0f9">zen::XmlElement::addChild</a></div><div class="ttdeci">XmlElement & addChild(const String &name)</div><div class="ttdoc">Create a new child element and return a reference to it. </div><div class="ttdef"><b>Definition:</b> dom.h:97</div></div> -<div class="ttc" id="classzen_1_1_xml_doc_html_a094e156f9d265443e52a527638e88a1e"><div class="ttname"><a href="classzen_1_1_xml_doc.html#a094e156f9d265443e52a527638e88a1e">zen::XmlDoc::root</a></div><div class="ttdeci">XmlElement & root()</div><div class="ttdoc">Get a reference to the document's root element. </div><div class="ttdef"><b>Definition:</b> dom.h:269</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_a3ab82b1720460487f4afabcd115d0c7e"><div class="ttname"><a href="classzen_1_1_xml_element.html#a3ab82b1720460487f4afabcd115d0c7e">zen::XmlElement::getChild</a></div><div class="ttdeci">const XmlElement * getChild(const String &name) const </div><div class="ttdoc">Retrieve a child element with the given name. </div><div class="ttdef"><b>Definition:</b> dom.h:113</div></div> -<div class="ttc" id="namespacezen_html_a2bdcecfe7435ef11cedbce47d4e72ee1"><div class="ttname"><a href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">zen::readStruc</a></div><div class="ttdeci">bool readStruc(const XmlElement &input, T &value)</div><div class="ttdoc">Convert XML element to structured user data. </div><div class="ttdef"><b>Definition:</b> cvrt_struc.h:205</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_a4af309f59ef09f46a559f1f0e1eac6c1"><div class="ttname"><a href="classzen_1_1_xml_element.html#a4af309f59ef09f46a559f1f0e1eac6c1">zen::XmlElement::parent</a></div><div class="ttdeci">XmlElement * parent()</div><div class="ttdoc">Get parent XML element, may be nullptr for root element. </div><div class="ttdef"><b>Definition:</b> dom.h:194</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_aaf3a26f6199fc88cce7d9d911ba21b01"><div class="ttname"><a href="classzen_1_1_xml_element.html#aaf3a26f6199fc88cce7d9d911ba21b01">zen::XmlElement::setValue</a></div><div class="ttdeci">void setValue(const T &value)</div><div class="ttdoc">Set the value of this element. </div><div class="ttdef"><b>Definition:</b> dom.h:52</div></div> -<div class="ttc" id="classzen_1_1_xml_doc_html_a7f93dcdc00cdc8d98926cf8e47161665"><div class="ttname"><a href="classzen_1_1_xml_doc.html#a7f93dcdc00cdc8d98926cf8e47161665">zen::XmlDoc::getVersionAs</a></div><div class="ttdeci">String getVersionAs() const </div><div class="ttdoc">Get the version used in the XML declaration. </div><div class="ttdef"><b>Definition:</b> dom.h:276</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_a211a6f037c22a54d3facb7a8347a8421"><div class="ttname"><a href="classzen_1_1_xml_element.html#a211a6f037c22a54d3facb7a8347a8421">zen::XmlElement::setAttribute</a></div><div class="ttdeci">void setAttribute(const String &name, const T &value)</div><div class="ttdoc">Create or update an XML attribute. </div><div class="ttdef"><b>Definition:</b> dom.h:77</div></div> -<div class="ttc" id="namespacezen_html_a29ddb823fe0a195f19a64448881b8bf6"><div class="ttname"><a href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">zen::writeStruc</a></div><div class="ttdeci">void writeStruc(const T &value, XmlElement &output)</div><div class="ttdoc">Convert structured user data into an XML element. </div><div class="ttdef"><b>Definition:</b> cvrt_struc.h:198</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_ae209dac9655bc36121abb87688ece41d"><div class="ttname"><a href="classzen_1_1_xml_element.html#ae209dac9655bc36121abb87688ece41d">zen::XmlElement::getChildren</a></div><div class="ttdeci">std::pair< ChildIter2, ChildIter2 > getChildren(const String &name)</div><div class="ttdef"><b>Definition:</b> dom.h:168</div></div> -<div class="ttc" id="classzen_1_1_xml_doc_html_ac1bfb9776852dc8195b9ffb4f65452e4"><div class="ttname"><a href="classzen_1_1_xml_doc.html#ac1bfb9776852dc8195b9ffb4f65452e4">zen::XmlDoc::getStandaloneAs</a></div><div class="ttdeci">String getStandaloneAs() const </div><div class="ttdoc">Get the standalone string used in the XML declaration. </div><div class="ttdef"><b>Definition:</b> dom.h:304</div></div> -<div class="ttc" id="classzen_1_1_xml_element_html_a7c911eb06a59c864197b1a4098728e50"><div class="ttname"><a href="classzen_1_1_xml_element.html#a7c911eb06a59c864197b1a4098728e50">zen::XmlElement::getNameAs</a></div><div class="ttdeci">String getNameAs() const </div><div class="ttdoc">Retrieve the name of this XML element. </div><div class="ttdef"><b>Definition:</b> dom.h:37</div></div> -<div class="ttc" id="namespacezen_html_a2ce2998296871fc2f4718ceceb22a23f"><div class="ttname"><a href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">zen::writeText</a></div><div class="ttdeci">void writeText(const T &value, std::string &output)</div><div class="ttdoc">Convert user data into text - used by XML elements and attributes. </div><div class="ttdef"><b>Definition:</b> cvrt_text.h:209</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/doxygen.css b/zenxml/doc/doxygen.css deleted file mode 100644 index f0f36f89..00000000 --- a/zenxml/doc/doxygen.css +++ /dev/null @@ -1,1366 +0,0 @@ -/* The standard CSS for doxygen 1.8.6 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -div.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #ffffff; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 4px 6px; - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -div.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: bold; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - border-top-left-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - -moz-border-radius-topleft: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -webkit-border-top-left-radius: 4px; - -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view when not used as main index */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -dl -{ - padding: 0 0 0 10px; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ -dl.section -{ - margin-left: 0px; - padding-left: 0px; -} - -dl.note -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00D000; -} - -dl.deprecated -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #505050; -} - -dl.todo -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00C0E0; -} - -dl.test -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #3030E0; -} - -dl.bug -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 20px 10px 10px; - width: 200px; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - diff --git a/zenxml/doc/doxygen.png b/zenxml/doc/doxygen.png Binary files differdeleted file mode 100644 index 3ff17d80..00000000 --- a/zenxml/doc/doxygen.png +++ /dev/null diff --git a/zenxml/doc/error_8h_source.html b/zenxml/doc/error_8h_source.html deleted file mode 100644 index 91e0421e..00000000 --- a/zenxml/doc/error_8h_source.html +++ /dev/null @@ -1,113 +0,0 @@ -<!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>zen::Xml: error.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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_5fe60cdff4f93e8435d81ae38a3e2e18.html">zenxml</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">error.h</div> </div> -</div><!--header--> -<div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// * This file is part of the FreeFileSync project. It is distributed under *</span></div> -<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *</span></div> -<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved *</span></div> -<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div> -<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#ifndef ZEN_XML_ERROR_HEADER_018734618433021489473214873214</span></div> -<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor"></span><span class="preprocessor">#define ZEN_XML_ERROR_HEADER_018734618433021489473214873214</span></div> -<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor"></span></div> -<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="keyword">namespace </span>zen</div> -<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> {</div> -<div class="line"><a name="l00013"></a><span class="lineno"><a class="line" href="structzen_1_1_xml_error.html"> 13</a></span> <span class="keyword">struct </span><a class="code" href="structzen_1_1_xml_error.html">XmlError</a></div> -<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> {</div> -<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> ~<a class="code" href="structzen_1_1_xml_error.html">XmlError</a>() {}</div> -<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> };</div> -<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> }</div> -<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div> -<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#endif //ZEN_XML_ERROR_HEADER_018734618433021489473214873214</span></div> -<div class="ttc" id="structzen_1_1_xml_error_html"><div class="ttname"><a href="structzen_1_1_xml_error.html">zen::XmlError</a></div><div class="ttdoc">Exception base class for zen::Xml. </div><div class="ttdef"><b>Definition:</b> error.h:13</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/functions.html b/zenxml/doc/functions.html deleted file mode 100644 index 79dbc774..00000000 --- a/zenxml/doc/functions.html +++ /dev/null @@ -1,259 +0,0 @@ -<!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>zen::Xml: Class Members</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li class="current"><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> - <div id="navrow3" class="tabs2"> - <ul class="tablist"> - <li class="current"><a href="functions.html"><span>All</span></a></li> - <li><a href="functions_func.html"><span>Functions</span></a></li> - <li><a href="functions_vars.html"><span>Variables</span></a></li> - </ul> - </div> - <div id="navrow4" class="tabs3"> - <ul class="tablist"> - <li><a href="#index_a"><span>a</span></a></li> - <li><a href="#index_c"><span>c</span></a></li> - <li><a href="#index_e"><span>e</span></a></li> - <li><a href="#index_g"><span>g</span></a></li> - <li><a href="#index_l"><span>l</span></a></li> - <li><a href="#index_n"><span>n</span></a></li> - <li><a href="#index_o"><span>o</span></a></li> - <li><a href="#index_p"><span>p</span></a></li> - <li><a href="#index_r"><span>r</span></a></li> - <li><a href="#index_s"><span>s</span></a></li> - <li class="current"><a href="#index_x"><span>x</span></a></li> - </ul> - </div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div> - -<h3><a class="anchor" id="index_a"></a>- a -</h3><ul> -<li>addChild() -: <a class="el" href="classzen_1_1_xml_element.html#a653caffa6fad89db7d14f67f987ad0f9">zen::XmlElement</a> -</li> -<li>attribute() -: <a class="el" href="classzen_1_1_xml_in.html#a971cd7054c551c4460d5220f6ec5cf01">zen::XmlIn</a> -, <a class="el" href="classzen_1_1_xml_out.html#acaf9b71fe1d907dd63dd4b91e2e03805">zen::XmlOut</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_c"></a>- c -</h3><ul> -<li>col -: <a class="el" href="structzen_1_1_xml_parsing_error.html#a4a37dc48883337499804a9dc791669fd">zen::XmlParsingError</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_e"></a>- e -</h3><ul> -<li>errorsOccured() -: <a class="el" href="classzen_1_1_xml_in.html#a33b5dd504d3165aa3f923f6b33e9991a">zen::XmlIn</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_g"></a>- g -</h3><ul> -<li>get() -: <a class="el" href="classzen_1_1_xml_in.html#a647b468b7c6c95b25f2e43627184177f">zen::XmlIn</a> -</li> -<li>getAttribute() -: <a class="el" href="classzen_1_1_xml_element.html#af90ac6f435b03ba37cf47ee188c58887">zen::XmlElement</a> -</li> -<li>getChild() -: <a class="el" href="classzen_1_1_xml_element.html#a5d672e8ccc7592442ab927bb267af658">zen::XmlElement</a> -</li> -<li>getChildren() -: <a class="el" href="classzen_1_1_xml_element.html#ae209dac9655bc36121abb87688ece41d">zen::XmlElement</a> -</li> -<li>getEncodingAs() -: <a class="el" href="classzen_1_1_xml_doc.html#a64ece4a1f3f8c802192b8f31506535da">zen::XmlDoc</a> -</li> -<li>getErrorsAs() -: <a class="el" href="classzen_1_1_xml_in.html#a84bb497d3b3fc753d054e52c4823c05e">zen::XmlIn</a> -</li> -<li>getNameAs() -: <a class="el" href="classzen_1_1_xml_element.html#a7c911eb06a59c864197b1a4098728e50">zen::XmlElement</a> -</li> -<li>getStandaloneAs() -: <a class="el" href="classzen_1_1_xml_doc.html#ac1bfb9776852dc8195b9ffb4f65452e4">zen::XmlDoc</a> -</li> -<li>getValue() -: <a class="el" href="classzen_1_1_xml_element.html#a5ac9d586a5668c2c64e3c06c6203b070">zen::XmlElement</a> -</li> -<li>getVersionAs() -: <a class="el" href="classzen_1_1_xml_doc.html#a7f93dcdc00cdc8d98926cf8e47161665">zen::XmlDoc</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_l"></a>- l -</h3><ul> -<li>lastError -: <a class="el" href="structzen_1_1_xml_file_error.html#a4a109e749675a3887af8cfc140303b8f">zen::XmlFileError</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_n"></a>- n -</h3><ul> -<li>next() -: <a class="el" href="classzen_1_1_xml_in.html#a60cf2678c989621545d27745dcafa4a4">zen::XmlIn</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_o"></a>- o -</h3><ul> -<li>operator int ConversionToBool::*() -: <a class="el" href="classzen_1_1_xml_in.html#a954950849b52557369932ab2a8b4ad72">zen::XmlIn</a> -</li> -<li>operator()() -: <a class="el" href="classzen_1_1_xml_in.html#a98cc59f687c89549381e76105f8fb506">zen::XmlIn</a> -, <a class="el" href="classzen_1_1_xml_out.html#a09ca9144515e3c109b36062b0475c8eb">zen::XmlOut</a> -</li> -<li>operator[]() -: <a class="el" href="classzen_1_1_xml_in.html#a9b38167835a28eac9a2297f35f51e53d">zen::XmlIn</a> -, <a class="el" href="classzen_1_1_xml_out.html#a00f883d3f9d60535b06b5ae609dc8831">zen::XmlOut</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_p"></a>- p -</h3><ul> -<li>parent() -: <a class="el" href="classzen_1_1_xml_element.html#a4af309f59ef09f46a559f1f0e1eac6c1">zen::XmlElement</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_r"></a>- r -</h3><ul> -<li>ref() -: <a class="el" href="classzen_1_1_xml_out.html#aec117344e8a534382e8d5e76711f97b2">zen::XmlOut</a> -</li> -<li>removeAttribute() -: <a class="el" href="classzen_1_1_xml_element.html#ad9c2ce2e55294c8110825988595e3934">zen::XmlElement</a> -</li> -<li>root() -: <a class="el" href="classzen_1_1_xml_doc.html#a094e156f9d265443e52a527638e88a1e">zen::XmlDoc</a> -</li> -<li>row -: <a class="el" href="structzen_1_1_xml_parsing_error.html#a3ed4cd1b5599df9b52500f620421496e">zen::XmlParsingError</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_s"></a>- s -</h3><ul> -<li>setAttribute() -: <a class="el" href="classzen_1_1_xml_element.html#a211a6f037c22a54d3facb7a8347a8421">zen::XmlElement</a> -</li> -<li>setEncoding() -: <a class="el" href="classzen_1_1_xml_doc.html#a2ae30bca2f490479f58c272148935a62">zen::XmlDoc</a> -</li> -<li>setStandalone() -: <a class="el" href="classzen_1_1_xml_doc.html#a4c92f9b8c1bb47247b827d89794590d4">zen::XmlDoc</a> -</li> -<li>setValue() -: <a class="el" href="classzen_1_1_xml_element.html#aaf3a26f6199fc88cce7d9d911ba21b01">zen::XmlElement</a> -</li> -<li>setVersion() -: <a class="el" href="classzen_1_1_xml_doc.html#ab45914339c476e1da35746f5e00dbc64">zen::XmlDoc</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_x"></a>- x -</h3><ul> -<li>XmlDoc() -: <a class="el" href="classzen_1_1_xml_doc.html#adbed9c31066d456a9cc8c610f15670ed">zen::XmlDoc</a> -</li> -<li>XmlIn() -: <a class="el" href="classzen_1_1_xml_in.html#a33de75412df69cb25e0fd8b3bc70c9f8">zen::XmlIn</a> -</li> -<li>XmlOut() -: <a class="el" href="classzen_1_1_xml_out.html#aa80be3a56f70a58d2730a763166088c0">zen::XmlOut</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/functions_func.html b/zenxml/doc/functions_func.html deleted file mode 100644 index 07af5877..00000000 --- a/zenxml/doc/functions_func.html +++ /dev/null @@ -1,240 +0,0 @@ -<!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>zen::Xml: Class Members - Functions</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li class="current"><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> - <div id="navrow3" class="tabs2"> - <ul class="tablist"> - <li><a href="functions.html"><span>All</span></a></li> - <li class="current"><a href="functions_func.html"><span>Functions</span></a></li> - <li><a href="functions_vars.html"><span>Variables</span></a></li> - </ul> - </div> - <div id="navrow4" class="tabs3"> - <ul class="tablist"> - <li><a href="#index_a"><span>a</span></a></li> - <li><a href="#index_e"><span>e</span></a></li> - <li><a href="#index_g"><span>g</span></a></li> - <li><a href="#index_n"><span>n</span></a></li> - <li><a href="#index_o"><span>o</span></a></li> - <li><a href="#index_p"><span>p</span></a></li> - <li><a href="#index_r"><span>r</span></a></li> - <li><a href="#index_s"><span>s</span></a></li> - <li class="current"><a href="#index_x"><span>x</span></a></li> - </ul> - </div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -  - -<h3><a class="anchor" id="index_a"></a>- a -</h3><ul> -<li>addChild() -: <a class="el" href="classzen_1_1_xml_element.html#a653caffa6fad89db7d14f67f987ad0f9">zen::XmlElement</a> -</li> -<li>attribute() -: <a class="el" href="classzen_1_1_xml_in.html#a971cd7054c551c4460d5220f6ec5cf01">zen::XmlIn</a> -, <a class="el" href="classzen_1_1_xml_out.html#acaf9b71fe1d907dd63dd4b91e2e03805">zen::XmlOut</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_e"></a>- e -</h3><ul> -<li>errorsOccured() -: <a class="el" href="classzen_1_1_xml_in.html#a33b5dd504d3165aa3f923f6b33e9991a">zen::XmlIn</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_g"></a>- g -</h3><ul> -<li>get() -: <a class="el" href="classzen_1_1_xml_in.html#a647b468b7c6c95b25f2e43627184177f">zen::XmlIn</a> -</li> -<li>getAttribute() -: <a class="el" href="classzen_1_1_xml_element.html#af90ac6f435b03ba37cf47ee188c58887">zen::XmlElement</a> -</li> -<li>getChild() -: <a class="el" href="classzen_1_1_xml_element.html#a5d672e8ccc7592442ab927bb267af658">zen::XmlElement</a> -</li> -<li>getChildren() -: <a class="el" href="classzen_1_1_xml_element.html#ac59268177d162931f937b6a7f235ad96">zen::XmlElement</a> -</li> -<li>getEncodingAs() -: <a class="el" href="classzen_1_1_xml_doc.html#a64ece4a1f3f8c802192b8f31506535da">zen::XmlDoc</a> -</li> -<li>getErrorsAs() -: <a class="el" href="classzen_1_1_xml_in.html#a84bb497d3b3fc753d054e52c4823c05e">zen::XmlIn</a> -</li> -<li>getNameAs() -: <a class="el" href="classzen_1_1_xml_element.html#a7c911eb06a59c864197b1a4098728e50">zen::XmlElement</a> -</li> -<li>getStandaloneAs() -: <a class="el" href="classzen_1_1_xml_doc.html#ac1bfb9776852dc8195b9ffb4f65452e4">zen::XmlDoc</a> -</li> -<li>getValue() -: <a class="el" href="classzen_1_1_xml_element.html#a5ac9d586a5668c2c64e3c06c6203b070">zen::XmlElement</a> -</li> -<li>getVersionAs() -: <a class="el" href="classzen_1_1_xml_doc.html#a7f93dcdc00cdc8d98926cf8e47161665">zen::XmlDoc</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_n"></a>- n -</h3><ul> -<li>next() -: <a class="el" href="classzen_1_1_xml_in.html#a60cf2678c989621545d27745dcafa4a4">zen::XmlIn</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_o"></a>- o -</h3><ul> -<li>operator int ConversionToBool::*() -: <a class="el" href="classzen_1_1_xml_in.html#a954950849b52557369932ab2a8b4ad72">zen::XmlIn</a> -</li> -<li>operator()() -: <a class="el" href="classzen_1_1_xml_in.html#a98cc59f687c89549381e76105f8fb506">zen::XmlIn</a> -, <a class="el" href="classzen_1_1_xml_out.html#a09ca9144515e3c109b36062b0475c8eb">zen::XmlOut</a> -</li> -<li>operator[]() -: <a class="el" href="classzen_1_1_xml_in.html#a9b38167835a28eac9a2297f35f51e53d">zen::XmlIn</a> -, <a class="el" href="classzen_1_1_xml_out.html#a00f883d3f9d60535b06b5ae609dc8831">zen::XmlOut</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_p"></a>- p -</h3><ul> -<li>parent() -: <a class="el" href="classzen_1_1_xml_element.html#a4af309f59ef09f46a559f1f0e1eac6c1">zen::XmlElement</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_r"></a>- r -</h3><ul> -<li>ref() -: <a class="el" href="classzen_1_1_xml_out.html#aec117344e8a534382e8d5e76711f97b2">zen::XmlOut</a> -</li> -<li>removeAttribute() -: <a class="el" href="classzen_1_1_xml_element.html#ad9c2ce2e55294c8110825988595e3934">zen::XmlElement</a> -</li> -<li>root() -: <a class="el" href="classzen_1_1_xml_doc.html#ad4a9594d93885fc1a12db28e8246648d">zen::XmlDoc</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_s"></a>- s -</h3><ul> -<li>setAttribute() -: <a class="el" href="classzen_1_1_xml_element.html#a211a6f037c22a54d3facb7a8347a8421">zen::XmlElement</a> -</li> -<li>setEncoding() -: <a class="el" href="classzen_1_1_xml_doc.html#a2ae30bca2f490479f58c272148935a62">zen::XmlDoc</a> -</li> -<li>setStandalone() -: <a class="el" href="classzen_1_1_xml_doc.html#a4c92f9b8c1bb47247b827d89794590d4">zen::XmlDoc</a> -</li> -<li>setValue() -: <a class="el" href="classzen_1_1_xml_element.html#aaf3a26f6199fc88cce7d9d911ba21b01">zen::XmlElement</a> -</li> -<li>setVersion() -: <a class="el" href="classzen_1_1_xml_doc.html#ab45914339c476e1da35746f5e00dbc64">zen::XmlDoc</a> -</li> -</ul> - - -<h3><a class="anchor" id="index_x"></a>- x -</h3><ul> -<li>XmlDoc() -: <a class="el" href="classzen_1_1_xml_doc.html#adbed9c31066d456a9cc8c610f15670ed">zen::XmlDoc</a> -</li> -<li>XmlIn() -: <a class="el" href="classzen_1_1_xml_in.html#a5b48c9848e6c631a04cec2477ff85c0f">zen::XmlIn</a> -</li> -<li>XmlOut() -: <a class="el" href="classzen_1_1_xml_out.html#aa80be3a56f70a58d2730a763166088c0">zen::XmlOut</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/functions_vars.html b/zenxml/doc/functions_vars.html deleted file mode 100644 index 60a4de36..00000000 --- a/zenxml/doc/functions_vars.html +++ /dev/null @@ -1,112 +0,0 @@ -<!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>zen::Xml: Class Members - Variables</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li class="current"><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> - <div id="navrow3" class="tabs2"> - <ul class="tablist"> - <li><a href="functions.html"><span>All</span></a></li> - <li><a href="functions_func.html"><span>Functions</span></a></li> - <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li> - </ul> - </div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> - <ul> -<li>col -: <a class="el" href="structzen_1_1_xml_parsing_error.html#a4a37dc48883337499804a9dc791669fd">zen::XmlParsingError</a> -</li> -<li>lastError -: <a class="el" href="structzen_1_1_xml_file_error.html#a4a109e749675a3887af8cfc140303b8f">zen::XmlFileError</a> -</li> -<li>row -: <a class="el" href="structzen_1_1_xml_parsing_error.html#a3ed4cd1b5599df9b52500f620421496e">zen::XmlParsingError</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/hierarchy.html b/zenxml/doc/hierarchy.html deleted file mode 100644 index 4e1b2175..00000000 --- a/zenxml/doc/hierarchy.html +++ /dev/null @@ -1,109 +0,0 @@ -<!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>zen::Xml: Class Hierarchy</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li class="current"><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="header"> - <div class="headertitle"> -<div class="title">Class Hierarchy</div> </div> -</div><!--header--> -<div class="contents"> -<div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory"> -<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory"> -<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classzen_1_1_xml_doc.html" target="_self">zen::XmlDoc</a></td><td class="desc">The complete XML document </td></tr> -<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classzen_1_1_xml_element.html" target="_self">zen::XmlElement</a></td><td class="desc">An XML element </td></tr> -<tr id="row_2_" class="even"><td class="entry"><img id="arr_2_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structzen_1_1_xml_error.html" target="_self">zen::XmlError</a></td><td class="desc">Exception base class for zen::Xml </td></tr> -<tr id="row_2_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structzen_1_1_xml_file_error.html" target="_self">zen::XmlFileError</a></td><td class="desc">Exception thrown due to failed file I/O </td></tr> -<tr id="row_2_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structzen_1_1_xml_parsing_error.html" target="_self">zen::XmlParsingError</a></td><td class="desc">Exception thrown due to an XML parsing error </td></tr> -<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classzen_1_1_xml_in.html" target="_self">zen::XmlIn</a></td><td class="desc">Proxy class to conveniently convert XML structure to user data </td></tr> -<tr id="row_4_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classzen_1_1_xml_out.html" target="_self">zen::XmlOut</a></td><td class="desc">Proxy class to conveniently convert user data into XML structure </td></tr> -</table> -</div><!-- directory --> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/index.html b/zenxml/doc/index.html deleted file mode 100644 index 1549b9f2..00000000 --- a/zenxml/doc/index.html +++ /dev/null @@ -1,654 +0,0 @@ -<!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>zen::Xml: Overview</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li class="current"><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="header"> - <div class="headertitle"> -<div class="title">Overview </div> </div> -</div><!--header--> -<div class="contents"> -<div class="textblock"><ul> -<li><a class="el" href="index.html#sec_Rationale">Rationale</a> </li> -<li><a class="el" href="index.html#sec_Quick_Start">Quick Start</a> </li> -<li><a class="el" href="index.html#sec_Supported_Platforms">Supported Platforms</a> </li> -<li><a class="el" href="index.html#sec_Flexible_Programming_Model">Flexible Programming Model</a> </li> -<li><a class="el" href="index.html#sec_Structured_XML_element_access">Structured XML element access</a> </li> -<li><a class="el" href="index.html#sec_Access_XML_attributes">Access XML attributes</a> </li> -<li><a class="el" href="index.html#sec_Automatic_conversion_built_in">Automatic conversion for built-in arithmetic types</a> </li> -<li><a class="el" href="index.html#sec_Automatic_conversion_string">Automatic conversion for string-like types</a> </li> -<li><a class="el" href="index.html#sec_Automatic_conversion_STL">Automatic conversion for STL container types</a> </li> -<li><a class="el" href="index.html#sec_Support_user_defined">Support for user-defined types</a> </li> -<li><a class="el" href="index.html#sec_Structured_user_types">Structured user types</a> </li> -<li><a class="el" href="index.html#sec_Type_Safety">Type Safety</a></li> -</ul> -<h1><a class="anchor" id="sec_Rationale"></a> -Rationale</h1> -<p>zen::Xml is an XML library serializing structured user data in a convenient way. Using compile-time information gathered by techniques of template metaprogramming it minimizes the manual overhead required and frees the user from implementing fundamental type conversions by himself. Basic data types such as</p> -<ul> -<li><b>all</b> built-in arithmetic numbers,</li> -<li><b>all</b> kinds of string classes and "string-like" types,</li> -<li><b>all</b> types defined as STL containers</li> -</ul> -<p>are handled automatically. Thereby a large number of recurring problems is solved by the library:</p> -<ul> -<li>generic number to string conversions</li> -<li>generic char to wchar_t conversions (UTF) for custom string classes in a platform independent manner</li> -<li>serialization of arbitrary STL container types</li> -<li>simple integration: header-only, no extra dependencies, fully portable</li> -<li>support arbitrary string classes everywhere: for file names, XML element names, attribute names, values, ...</li> -<li>XML library built on C++11 with focus on elegance, minimal code size, flexibility and performance</li> -<li>easily extensible API: allow for internationalization, fine-granular error handling, and custom file I/O</li> -</ul> -<p>The design follows the philosophy of the Loki library: <br/> -<a href="http://loki-lib.sourceforge.net/index.php?n=Main.Philosophy">http://loki-lib.sourceforge.net/index.php?n=Main.Philosophy</a></p> -<h1><a class="anchor" id="sec_Quick_Start"></a> -Quick Start</h1> -<p>1. Download zen::Xml: <a href="http://sourceforge.net/projects/zenxml">http://sourceforge.net/projects/zenxml</a></p> -<p>2. Setup one of the following preprocessor macros for your project to identify the platform (this is only required if you use C-stream-based file IO) </p> -<div class="fragment"><div class="line">ZEN_WIN</div> -<div class="line">ZEN_LINUX </div> -<div class="line">ZEN_MAC</div> -</div><!-- fragment --><p>3. For optimal performance define this global macro in release build: (following convention of the <code>assert</code> macro) </p> -<div class="fragment"><div class="line">NDEBUG</div> -</div><!-- fragment --><p>4. Include the main header: </p> -<div class="fragment"><div class="line"><span class="preprocessor">#include <zenxml/xml.h></span></div> -</div><!-- fragment --><p>5. Start serializing user data:</p> -<div class="fragment"><div class="line"><span class="keywordtype">size_t</span> a = 10;</div> -<div class="line"><span class="keywordtype">double</span> b = 2.0;</div> -<div class="line"><span class="keywordtype">int</span> c = -1;</div> -</div><!-- fragment --><div class="fragment"><div class="line"><a class="code" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a> doc; <span class="comment">//empty XML document</span></div> -<div class="line"></div> -<div class="line"><a class="code" href="classzen_1_1_xml_out.html">zen::XmlOut</a> out(doc); <span class="comment">//the simplest way to fill the document is to use a data output proxy</span></div> -<div class="line">out[<span class="stringliteral">"elem1"</span>](a); <span class="comment">//</span></div> -<div class="line">out[<span class="stringliteral">"elem2"</span>](b); <span class="comment">//map data types to XML elements</span></div> -<div class="line">out[<span class="stringliteral">"elem3"</span>](c); <span class="comment">//</span></div> -<div class="line"></div> -<div class="line"><span class="keywordflow">try</span></div> -<div class="line">{</div> -<div class="line"> <a class="code" href="namespacezen.html#adeeb6b2318097382ae47aa939fc15d4d">save</a>(doc, <span class="stringliteral">"file.xml"</span>); <span class="comment">//throw zen::XmlFileError</span></div> -<div class="line">}</div> -<div class="line"><span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="structzen_1_1_xml_file_error.html">zen::XmlFileError</a>& e) { <span class="comment">/* handle error */</span> }</div> -</div><!-- fragment --><p>The following XML file will be created: </p> -<pre class="fragment"><?xml version="1.0" encoding="UTF-8"?> -<Root> - <elem1>10</elem1> - <elem2>2.000000</elem2> - <elem3>-1</elem3> -</Root> -</pre><p>Load an XML file and map its content to user data: </p> -<div class="fragment"><div class="line"><a class="code" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a> doc; <span class="comment">//empty XML document</span></div> -<div class="line"></div> -<div class="line"><span class="keywordflow">try</span></div> -<div class="line">{</div> -<div class="line"> <a class="code" href="namespacezen.html#a872a48c0616e7f12ae8caca464835e00">load</a>(<span class="stringliteral">"file.xml"</span>, doc); <span class="comment">//throw XmlFileError, XmlParsingError</span></div> -<div class="line">}</div> -<div class="line"><span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="structzen_1_1_xml_error.html">zen::XmlError</a>& e) { <span class="comment">/* handle error */</span> }</div> -<div class="line"></div> -<div class="line"><a class="code" href="classzen_1_1_xml_in.html">zen::XmlIn</a> in(doc); <span class="comment">//the simplest way to read the document is to use a data input proxy</span></div> -<div class="line">in[<span class="stringliteral">"elem1"</span>](a); <span class="comment">//</span></div> -<div class="line">in[<span class="stringliteral">"elem2"</span>](b); <span class="comment">//map XML elements into user data</span></div> -<div class="line">in[<span class="stringliteral">"elem3"</span>](c); <span class="comment">//</span></div> -<div class="line"></div> -<div class="line"><span class="comment">//check for mapping errors, i.e. missing elements or conversion errors: you may consider these as warnings only</span></div> -<div class="line"><span class="keywordflow">if</span> (in.errorsOccured())</div> -<div class="line">{</div> -<div class="line"> std::vector<std::wstring> failedElements = in.getErrorsAs<std::wstring>();</div> -<div class="line"> <span class="comment">/* generate error message showing the XML element names that failed to convert */</span></div> -<div class="line">}</div> -</div><!-- fragment --><h1><a class="anchor" id="sec_Supported_Platforms"></a> -Supported Platforms</h1> -<p>zen::Xml is written in a platform independent manner and runs on any rudimentary C++11 compliant compiler. It has been tested successfully under:</p> -<ul> -<li>Windows:<ol type="1"> -<li>Visual C++ 2010 - 32 bit</li> -<li>Visual C++ 2010 - 64 bit</li> -<li>MinGW: GCC 4.5.2 - 32 bit</li> -</ol> -</li> -<li>Linux:<ol type="1"> -<li>GCC 4.5.2 - 32 bit</li> -<li>GCC 4.5.2 - 64 bit</li> -</ol> -</li> -<li>Mac OS X:<ol type="1"> -<li>Clang 3.2 - 64 bit</li> -</ol> -</li> -</ul> -<p><b>Note:</b> In order to enable C++11 features in GCC it is required to specify either of the following compiler options: </p> -<pre class="fragment">-std=c++11 --std=c++0x --std=gnu++0x -</pre><h1><a class="anchor" id="sec_Flexible_Programming_Model"></a> -Flexible Programming Model</h1> -<p>Depending on what granularity of control is required in a particular application, zen::Xml allows the user to choose between full control or simplicity. <br/> -<br/> -The library is structured into the following parts, each of which can be used in isolation: <br/> -<br/> -<b><File></b> <br/> -|<br/> -| <a class="el" href="io_8h_source.html" title="Save and load byte streams from files. ">io.h</a><br/> -|<br/> -<b><Byte Stream></b><br/> -|<br/> -| <a class="el" href="parser_8h_source.html" title="Convert an XML document object model (class XmlDoc) to and from a byte stream representation. ">parser.h</a><br/> -|<br/> -<b><Document Object Model></b><br/> -|<br/> -| <a class="el" href="bind_8h_source.html" title="Map user data types to XML. ">bind.h</a><br/> -|<br/> -<b><C++ user data></b> <br/> -<br/> -</p> -<ul> -<li>Save an XML document to memory <div class="fragment"><div class="line"><a class="code" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a> doc;</div> -<div class="line"> ... <span class="comment">//fill it</span></div> -<div class="line">std::string stream = <a class="code" href="namespacezen.html#afaa4920e275078e6c8009fbdf58b57ee">serialize</a>(doc); <span class="comment">//throw ()</span></div> -<div class="line"><span class="comment">/* you now have a binary XML stream */</span></div> -<div class="line"></div> -<div class="line"><a class="code" href="namespacezen.html#a4ba7bbaa14a787b07fc13da9145aabe2">saveStream</a>(stream, <span class="stringliteral">"file.xml"</span>); <span class="comment">//throw XmlFileError</span></div> -<div class="line"><span class="comment">//if all you need is to store XmlDoc in a file direcly you can use zen::save() instead</span></div> -</div><!-- fragment --></li> -<li>Load XML document from memory <div class="fragment"><div class="line"><span class="comment">//get XML byte stream:</span></div> -<div class="line">std::string stream = <a class="code" href="namespacezen.html#a04fe23c3bd9b7d03309620b5ea763607">loadStream</a>(<span class="stringliteral">"file.xml"</span>); <span class="comment">//throw XmlFileError</span></div> -<div class="line"></div> -<div class="line"><a class="code" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a> doc;</div> -<div class="line"><span class="comment">//parse byte stream into an XML document:</span></div> -<div class="line"><a class="code" href="namespacezen.html#a1ae1a4688d724b554fe3bf4638700477">parse</a>(stream, doc); <span class="comment">//throw XmlParsingError</span></div> -<div class="line"><span class="comment">//if all you need is to load an XmlDoc from a file you can use zen::load() directly</span></div> -</div><!-- fragment --></li> -<li>Fine-granular error checking with the data input proxy <div class="fragment"><div class="line"><a class="code" href="classzen_1_1_xml_in.html">zen::XmlIn</a> in(doc);</div> -<div class="line"><span class="comment">//map XML elements into user data</span></div> -<div class="line"><span class="keywordflow">if</span> (!in[<span class="stringliteral">"elem1"</span>](a))</div> -<div class="line"> <span class="keywordflow">throw</span> MyCustomException();</div> -<div class="line"><span class="keywordflow">if</span> (!in[<span class="stringliteral">"elem2"</span>](b))</div> -<div class="line"> <span class="keywordflow">throw</span> MyCustomException();</div> -<div class="line"><span class="keywordflow">if</span> (!in[<span class="stringliteral">"elem3"</span>](c))</div> -<div class="line"> <span class="keywordflow">throw</span> MyCustomException();</div> -<div class="line"></div> -<div class="line"><span class="comment">//if (in.errorsOccured()) ... <- not required here: contains the same conversion errors checked manually before</span></div> -</div><!-- fragment --></li> -<li>Access the Document Object Model directly (without input/output proxy) <br/> -<br/> -The full power of type conversions which is available via the input/output proxy classes <a class="el" href="classzen_1_1_xml_in.html" title="Proxy class to conveniently convert XML structure to user data. ">zen::XmlIn</a> and <a class="el" href="classzen_1_1_xml_out.html" title="Proxy class to conveniently convert user data into XML structure. ">zen::XmlOut</a> is also available for the document object model! <div class="fragment"><div class="line"><span class="keyword">using namespace </span>zen;</div> -<div class="line"></div> -<div class="line"><a class="code" href="classzen_1_1_xml_doc.html">XmlDoc</a> doc;</div> -<div class="line"></div> -<div class="line"><a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>& child = doc.<a class="code" href="classzen_1_1_xml_doc.html#ad4a9594d93885fc1a12db28e8246648d">root</a>().<a class="code" href="classzen_1_1_xml_element.html#a653caffa6fad89db7d14f67f987ad0f9">addChild</a>(<span class="stringliteral">"elem1"</span>);</div> -<div class="line">child.<a class="code" href="classzen_1_1_xml_element.html#aaf3a26f6199fc88cce7d9d911ba21b01">setValue</a>(1234);</div> -<div class="line"></div> -<div class="line"><a class="code" href="namespacezen.html#adeeb6b2318097382ae47aa939fc15d4d">save</a>(doc, <span class="stringliteral">"file.xml"</span>); <span class="comment">//throw XmlFileError</span></div> -</div><!-- fragment --> <br/> -<div class="fragment"><div class="line"><span class="keyword">using namespace </span>zen;</div> -<div class="line"></div> -<div class="line"><a class="code" href="classzen_1_1_xml_doc.html">XmlDoc</a> doc;</div> -<div class="line"><a class="code" href="namespacezen.html#a872a48c0616e7f12ae8caca464835e00">load</a>(<span class="stringliteral">"file.xml"</span>, doc); <span class="comment">//throw XmlFileError, XmlParsingError</span></div> -<div class="line"></div> -<div class="line"><a class="code" href="classzen_1_1_xml_element.html">XmlElement</a>* child = doc.<a class="code" href="classzen_1_1_xml_doc.html#ad4a9594d93885fc1a12db28e8246648d">root</a>().<a class="code" href="classzen_1_1_xml_element.html#a3ab82b1720460487f4afabcd115d0c7e">getChild</a>(<span class="stringliteral">"elem1"</span>);</div> -<div class="line"><span class="keywordflow">if</span> (child)</div> -<div class="line">{</div> -<div class="line"> <span class="keywordtype">int</span> value = -1;</div> -<div class="line"> <span class="keywordflow">if</span> (!child->getValue(value))</div> -<div class="line"> ... <span class="comment">//handle conversion error</span></div> -<div class="line">}</div> -<div class="line"><span class="keywordflow">else</span></div> -<div class="line"> ... <span class="comment">//XML element not found</span></div> -</div><!-- fragment --></li> -</ul> -<h1><a class="anchor" id="sec_Structured_XML_element_access"></a> -Structured XML element access</h1> -<div class="fragment"><div class="line"><span class="comment">//write a value into one deeply nested XML element - note the different types used seamlessly: char[], wchar_t[], char, wchar_t, int</span></div> -<div class="line"><a class="code" href="classzen_1_1_xml_out.html">zen::XmlOut</a> out(doc);</div> -<div class="line">out[<span class="stringliteral">"elemento1"</span>][L<span class="stringliteral">"элемент2"</span>][L<span class="stringliteral">"要素3"</span>][L<span class="stringliteral">"στοιχείο4"</span>][<span class="stringliteral">"elem5"</span>][L<span class="stringliteral">"元素6"</span>][L<span class="stringliteral">'元'</span>][<span class="charliteral">'z'</span>](-1234);</div> -</div><!-- fragment --><p>The resulting XML: </p> -<pre class="fragment"><?xml version="1.0" encoding="UTF-8"?> -<Root> - <elemento1> - <элемент2> - <要素3> - <στοιχείο4> - <elem5> - <元素6> - <元> - <z>-1234</z> - </元> - </元素6> - </elem5> - </στοιχείο4> - </要素3> - </элемент2> - </elemento1> -</Root> -</pre><h1><a class="anchor" id="sec_Access_XML_attributes"></a> -Access XML attributes</h1> -<div class="fragment"><div class="line"><a class="code" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a> doc;</div> -<div class="line"></div> -<div class="line"><a class="code" href="classzen_1_1_xml_out.html">zen::XmlOut</a> out(doc);</div> -<div class="line">out[<span class="stringliteral">"elem"</span>].attribute(<span class="stringliteral">"attr1"</span>, -1); <span class="comment">//</span></div> -<div class="line">out[<span class="stringliteral">"elem"</span>].attribute(<span class="stringliteral">"attr2"</span>, 2.1); <span class="comment">//write data into XML attributes</span></div> -<div class="line">out[<span class="stringliteral">"elem"</span>].attribute(<span class="stringliteral">"attr3"</span>, <span class="keyword">true</span>); <span class="comment">//</span></div> -<div class="line"></div> -<div class="line"><a class="code" href="namespacezen.html#adeeb6b2318097382ae47aa939fc15d4d">save</a>(doc, <span class="stringliteral">"file.xml"</span>); <span class="comment">//throw XmlFileError</span></div> -</div><!-- fragment --><p>The resulting XML: </p> -<pre class="fragment"><?xml version="1.0" encoding="UTF-8"?> -<Root> - <elem attr1="-1" attr2="2.1" attr3="true"/> -</Root> -</pre><h1><a class="anchor" id="sec_Automatic_conversion_built_in"></a> -Automatic conversion for built-in arithmetic types</h1> -<p>All built-in arithmetic types and <code>bool</code> are detected at compile time and a proper conversion is applied. Common conversions for integer-like types such as <code>int</code>, <code>long</code>, <code>long long</code>, ect. as well as floating point types are optimized for maximum performance.</p> -<div class="fragment"><div class="line"><a class="code" href="classzen_1_1_xml_out.html">zen::XmlOut</a> out(doc);</div> -<div class="line"></div> -<div class="line">out[<span class="stringliteral">"int"</span>] (-1234);</div> -<div class="line">out[<span class="stringliteral">"double"</span>](1.23);</div> -<div class="line">out[<span class="stringliteral">"float"</span>] (4.56f);</div> -<div class="line">out[<span class="stringliteral">"ulong"</span>] (1234UL);</div> -<div class="line">out[<span class="stringliteral">"bool"</span>] (<span class="keyword">false</span>);</div> -</div><!-- fragment --><p>The resulting XML: </p> -<pre class="fragment"><?xml version="1.0" encoding="UTF-8"?> -<Root> - <int>-1234</int> - <double>1.23</double> - <float>4.56</float> - <ulong>1234</ulong> - <bool>false</bool> -</Root> -</pre><h1><a class="anchor" id="sec_Automatic_conversion_string"></a> -Automatic conversion for string-like types</h1> -<p>The document object model of zen::Xml internally stores all names and values as a std::string. Consequently everything that is not a std::string but is "string-like" is UTF-converted into a std::string representation. By default zen::Xml accepts all character arrays like <code>char[]</code>, <code>wchar_t[]</code>, <code>char*</code>, <code>wchar_t*</code>, single characters like <code>char</code>, <code>wchar_t</code>, standard string classes like <code>std::string</code>, <code>std::wstring</code> and user-defined string classes. If the input string is based on <code>char</code>, it will simply be copied and thereby preserves any local encodings. If the input string is based on <code>wchar_t</code> it will be converted to an UTF-8 encoded <code>std::string</code>. The correct <code>wchar_t</code> encoding of the system will be detected at compile time, for example UTF-16 on Windows, UTF-32 on most Linux distributions.</p> -<p><b>Note:</b> User-defined string classes are automatically supported if they fulfill the following <b>string concept</b> by defining:</p> -<ol type="1"> -<li>A typedef named <code>value_type</code> for the underlying character type: must be <code>char</code> or <code>wchar_t</code> </li> -<li>A member function <code>c_str()</code> returning something that can be converted into a <code>const value_type*</code></li> -<li>A member function <code>length()</code> returning the number of characters returned by <code>c_str()</code></li> -</ol> -<div class="fragment"><div class="line">std::string elem1 = <span class="stringliteral">"elemento1"</span>;</div> -<div class="line">std::wstring elem2 = L<span class="stringliteral">"элемент2"</span>;</div> -<div class="line">wxString elem3 = L<span class="stringliteral">"要素3"</span>;</div> -<div class="line">MyString elem4 = L<span class="stringliteral">"στοιχείο4"</span>;</div> -<div class="line"></div> -<div class="line"><a class="code" href="classzen_1_1_xml_out.html">zen::XmlOut</a> out(doc);</div> -<div class="line"></div> -<div class="line">out[<span class="stringliteral">"string"</span>] (elem1);</div> -<div class="line">out[<span class="stringliteral">"wstring"</span>] (elem2);</div> -<div class="line">out[<span class="stringliteral">"wxString"</span>] (elem3);</div> -<div class="line">out[<span class="stringliteral">"MyString"</span>] (elem4);</div> -<div class="line">out[<span class="stringliteral">"char[6]"</span>] (<span class="stringliteral">"elem5"</span>);</div> -<div class="line">out[<span class="stringliteral">"wchar_t[4]"</span>](L<span class="stringliteral">"元素6"</span>);</div> -<div class="line">out[<span class="stringliteral">"wchar_t"</span>] (L<span class="stringliteral">'元'</span>);</div> -<div class="line">out[<span class="stringliteral">"char"</span>] (<span class="charliteral">'z'</span>);</div> -</div><!-- fragment --><p>The resulting XML: </p> -<pre class="fragment"><?xml version="1.0" encoding="UTF-8"?> -<Root> - <string>elemento1</string> - <wstring>элемент2</wstring> - <wxString>要素3</wxString> - <MyString>στοιχείο4</MyString> - <char[6]>elem5</char[6]> - <wchar_t[4]>元素6</wchar_t[4]> - <wchar_t>元</wchar_t> - <char>z</char> -</Root> -</pre><h1><a class="anchor" id="sec_Automatic_conversion_STL"></a> -Automatic conversion for STL container types</h1> -<ul> -<li>User-defined STL compatible types are automatically supported if they fulfill the following <b>container concept</b> by defining:<ol type="1"> -<li>A typedef named <code>value_type</code> for the underlying element type of the container</li> -<li>A typedef named <code>iterator</code> for a non-const iterator into the container</li> -<li>A typedef named <code>const_iterator</code> for a const iterator into the container <br/> -<br/> -</li> -<li>A member function <code>begin()</code> returning an iterator pointing to the first element in the container</li> -<li>A member function <code>end()</code> returning an iterator pointing just after the last element in the container</li> -<li>A member function <code>insert()</code> with the signature <code>iterator insert(iterator position, const value_type& x)</code></li> -<li>A member function <code>clear()</code> removing all elements from the container</li> -</ol> -</li> -<li>In order to support combinations of user types and STL containers such as <code>std::vector<MyType></code> or <code>std::vector<std::list<MyType>></code> it is sufficient to only integrate <code>MyType</code> into zen::Xml. <br/> -See <a class="el" href="index.html#sec_Support_user_defined">Support for user-defined types</a></li> -</ul> -<div class="fragment"><div class="line">std::deque <float> testDeque;</div> -<div class="line">std::list <size_t> testList;</div> -<div class="line">std::map <double, char> testMap;</div> -<div class="line">std::multimap<short, double> testMultiMap;</div> -<div class="line">std::set <int> testSet;</div> -<div class="line">std::multiset<std::string> testMultiSet;</div> -<div class="line">std::vector <wchar_t> testVector;</div> -<div class="line">std::vector <std::list<wchar_t>> testVectorList;</div> -<div class="line">std::pair <char, wchar_t> testPair;</div> -<div class="line"></div> -<div class="line"><span class="comment">/* fill container */</span></div> -<div class="line"></div> -<div class="line"><a class="code" href="classzen_1_1_xml_out.html">zen::XmlOut</a> out(doc);</div> -<div class="line"></div> -<div class="line">out[<span class="stringliteral">"deque"</span>] (testDeque);</div> -<div class="line">out[<span class="stringliteral">"list"</span>] (testList);</div> -<div class="line">out[<span class="stringliteral">"map"</span>] (testMap);</div> -<div class="line">out[<span class="stringliteral">"multimap"</span>] (testMultiMap);</div> -<div class="line">out[<span class="stringliteral">"set"</span>] (testSet);</div> -<div class="line">out[<span class="stringliteral">"multiset"</span>] (testMultiSet);</div> -<div class="line">out[<span class="stringliteral">"vector"</span>] (testVector);</div> -<div class="line">out[<span class="stringliteral">"vect_list"</span>](testVectorList);</div> -<div class="line">out[<span class="stringliteral">"pair"</span> ] (testPair);</div> -</div><!-- fragment --><p>The resulting XML: </p> -<pre class="fragment"><?xml version="1.0" encoding="UTF-8"?> -<Root> - <deque> - <Item>1.234</Item> - <Item>5.678</Item> - </deque> - <list> - <Item>1</Item> - <Item>2</Item> - </list> - <map> - <Item> - <one>1.1</one> - <two>a</two> - </Item> - <Item> - <one>2.2</one> - <two>b</two> - </Item> - </map> - <multimap> - <Item> - <one>3</one> - <two>99</two> - </Item> - <Item> - <one>3</one> - <two>100</two> - </Item> - <Item> - <one>4</one> - <two>101</two> - </Item> - </multimap> - <set> - <Item>1</Item> - <Item>2</Item> - </set> - <multiset> - <Item>1</Item> - <Item>1</Item> - <Item>2</Item> - </multiset> - <vector> - <Item>Ä</Item> - <Item>Ö</Item> - </vector> - <vect_list> - <Item> - <Item>ä</Item> - <Item>ö</Item> - <Item>ü</Item> - </Item> - <Item> - <Item>ä</Item> - <Item>ö</Item> - <Item>ü</Item> - </Item> - </vect_list> - <pair> - <one>a</one> - <two>â</two> - </pair> -</Root> -</pre><h1><a class="anchor" id="sec_Support_user_defined"></a> -Support for user-defined types</h1> -<p>User types can be integrated into zen::Xml by providing specializations of <a class="el" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff" title="Convert text to user data - used by XML elements and attributes. ">zen::readText()</a> and <a class="el" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f" title="Convert user data into text - used by XML elements and attributes. ">zen::writeText()</a> or <a class="el" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1" title="Convert XML element to structured user data. ">zen::readStruc()</a> and <a class="el" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6" title="Convert structured user data into an XML element. ">zen::writeStruc()</a>. The first pair should be used for all non-structured types that can be represented as a simple text string. This specialization is then used to convert the type to XML elements and XML attributes. The second pair should be specialized for structured types that require an XML representation as a hierarchy of elements. This specialization is used when converting the type to XML elements only. <br/> -<br/> -See section <a class="el" href="index.html#sec_Type_Safety">Type Safety</a> for a discussion of type categories. <br/> -<br/> -<b>Example: Specialization for an enum type</b> </p> -<div class="fragment"><div class="line"><span class="keyword">enum</span> UnitTime</div> -<div class="line">{</div> -<div class="line"> UNIT_SECOND,</div> -<div class="line"> UNIT_MINUTE,</div> -<div class="line"> UNIT_HOUR</div> -<div class="line">};</div> -<div class="line"></div> -<div class="line"><span class="keyword">namespace </span>zen</div> -<div class="line">{</div> -<div class="line"><span class="keyword">template</span> <> <span class="keyword">inline</span></div> -<div class="line"><span class="keywordtype">void</span> <a class="code" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">writeText</a>(<span class="keyword">const</span> UnitTime& value, std::string& output)</div> -<div class="line">{</div> -<div class="line"> <span class="keywordflow">switch</span> (value)</div> -<div class="line"> {</div> -<div class="line"> <span class="keywordflow">case</span> UNIT_SECOND: output = <span class="stringliteral">"second"</span>; <span class="keywordflow">break</span>;</div> -<div class="line"> <span class="keywordflow">case</span> UNIT_MINUTE: output = <span class="stringliteral">"minute"</span>; <span class="keywordflow">break</span>;</div> -<div class="line"> <span class="keywordflow">case</span> UNIT_HOUR: output = <span class="stringliteral">"hour"</span> ; <span class="keywordflow">break</span>;</div> -<div class="line"> }</div> -<div class="line">}</div> -<div class="line"></div> -<div class="line"><span class="keyword">template</span> <> <span class="keyword">inline</span></div> -<div class="line"><span class="keywordtype">bool</span> <a class="code" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">readText</a>(<span class="keyword">const</span> std::string& input, UnitTime& value)</div> -<div class="line">{</div> -<div class="line"> std::string tmp = input;</div> -<div class="line"> zen::trim(tmp);</div> -<div class="line"> <span class="keywordflow">if</span> (tmp == <span class="stringliteral">"second"</span>)</div> -<div class="line"> value = UNIT_SECOND;</div> -<div class="line"> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tmp == <span class="stringliteral">"minute"</span>)</div> -<div class="line"> value = UNIT_MINUTE;</div> -<div class="line"> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tmp == <span class="stringliteral">"hour"</span>)</div> -<div class="line"> value = UNIT_HOUR;</div> -<div class="line"> <span class="keywordflow">else</span></div> -<div class="line"> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> -<div class="line"> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> -<div class="line">}</div> -<div class="line">}</div> -</div><!-- fragment --><p><b>Example: Brute-force specialization for an enum type</b> </p> -<div class="fragment"><div class="line"><span class="keyword">namespace </span>zen</div> -<div class="line">{</div> -<div class="line"><span class="keyword">template</span> <> <span class="keyword">inline</span></div> -<div class="line"><span class="keywordtype">void</span> <a class="code" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">writeText</a>(<span class="keyword">const</span> EnumType& value, std::string& output)</div> -<div class="line">{</div> -<div class="line"> output = zen::numberTo<std::string>(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(value)); <span class="comment">//treat enum like an integer</span></div> -<div class="line">}</div> -<div class="line"></div> -<div class="line"><span class="keyword">template</span> <> <span class="keyword">inline</span></div> -<div class="line"><span class="keywordtype">bool</span> <a class="code" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">readText</a>(<span class="keyword">const</span> std::string& input, EnumType& value)</div> -<div class="line">{</div> -<div class="line"> value = <span class="keyword">static_cast<</span>EnumType<span class="keyword">></span>(zen::stringTo<int>(input)); <span class="comment">//treat enum like an integer</span></div> -<div class="line"> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> -<div class="line">}</div> -<div class="line">}</div> -</div><!-- fragment --><p><b>Example: Specialization for a structured user type</b> </p> -<div class="fragment"><div class="line"><span class="keyword">struct </span>Config</div> -<div class="line">{</div> -<div class="line"> <span class="keywordtype">int</span> a;</div> -<div class="line"> std::wstring b;</div> -<div class="line">};</div> -<div class="line"></div> -<div class="line"><span class="keyword">namespace </span>zen</div> -<div class="line">{</div> -<div class="line"><span class="keyword">template</span> <> <span class="keyword">inline</span></div> -<div class="line"><span class="keywordtype">void</span> <a class="code" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">writeStruc</a>(<span class="keyword">const</span> Config& value, XmlElement& output)</div> -<div class="line">{</div> -<div class="line"> XmlOut out(output);</div> -<div class="line"> out[<span class="stringliteral">"number"</span> ](value.a);</div> -<div class="line"> out[<span class="stringliteral">"address"</span>](value.b);</div> -<div class="line">}</div> -<div class="line"></div> -<div class="line"><span class="keyword">template</span> <> <span class="keyword">inline</span></div> -<div class="line"><span class="keywordtype">bool</span> <a class="code" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">readStruc</a>(<span class="keyword">const</span> XmlElement& input, Config& value)</div> -<div class="line">{</div> -<div class="line"> XmlIn in(input);</div> -<div class="line"> <span class="keywordtype">bool</span> rv1 = in[<span class="stringliteral">"number"</span> ](value.a);</div> -<div class="line"> <span class="keywordtype">bool</span> rv2 = in[<span class="stringliteral">"address"</span>](value.b);</div> -<div class="line"> <span class="keywordflow">return</span> rv1 && rv2;</div> -<div class="line">}</div> -<div class="line">}</div> -<div class="line"></div> -<div class="line"><span class="keywordtype">int</span> main()</div> -<div class="line">{</div> -<div class="line"> Config cfg = { 2, L<span class="stringliteral">"Abc 3"</span> };</div> -<div class="line"></div> -<div class="line"> std::vector<Config> cfgList;</div> -<div class="line"> cfgList.push_back(cfg);</div> -<div class="line"></div> -<div class="line"> <a class="code" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a> doc;</div> -<div class="line"> <a class="code" href="classzen_1_1_xml_out.html">zen::XmlOut</a> out(doc); <span class="comment">//write to Xml via output proxy</span></div> -<div class="line"> out[<span class="stringliteral">"config"</span>](cfgList);</div> -<div class="line"> <a class="code" href="namespacezen.html#adeeb6b2318097382ae47aa939fc15d4d">save</a>(doc, <span class="stringliteral">"file.xml"</span>); <span class="comment">//throw XmlFileError</span></div> -<div class="line">}</div> -</div><!-- fragment --><p>The resulting XML: </p> -<pre class="fragment"><?xml version="1.0" encoding="UTF-8"?> -<Root> - <config> - <Item> - <number>2</number> - <address>Abc 3</address> - </Item> - </config> -</Root> -</pre><h1><a class="anchor" id="sec_Structured_user_types"></a> -Structured user types</h1> -<p>Although it is possible to enable conversion of structured user types by specializing <a class="el" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1" title="Convert XML element to structured user data. ">zen::readStruc()</a> and <a class="el" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6" title="Convert structured user data into an XML element. ">zen::writeStruc()</a> (see <a class="el" href="index.html#sec_Support_user_defined">Support for user-defined types</a>), this approach has one drawback: If a mapping error occurs when converting an XML element to structured user data, for example a child-element is missing, the input proxy class <a class="el" href="classzen_1_1_xml_in.html" title="Proxy class to conveniently convert XML structure to user data. ">zen::XmlIn</a> is only able to detect that the whole conversion failed. It cannot say which child-elements in particular failed to convert. <br/> -<br/> -Therefore it may be appropriate to convert structured types by calling subroutines in order to enable fine-granular logging:</p> -<div class="fragment"><div class="line"><span class="keywordtype">void</span> readConfig(<span class="keyword">const</span> <a class="code" href="classzen_1_1_xml_in.html">zen::XmlIn</a>& in, Config& cfg)</div> -<div class="line">{</div> -<div class="line"> in[<span class="stringliteral">"number"</span> ](value.a); <span class="comment">//failed conversions will now be logged for each single item by XmlIn</span></div> -<div class="line"> in[<span class="stringliteral">"address"</span>](value.b); <span class="comment">//instead of only once for the complete Config type!</span></div> -<div class="line">}</div> -<div class="line"></div> -<div class="line"></div> -<div class="line"><span class="keywordtype">void</span> loadConfig(<span class="keyword">const</span> wxString& filename, Config& cfg)</div> -<div class="line">{</div> -<div class="line"> <a class="code" href="classzen_1_1_xml_doc.html">zen::XmlDoc</a> doc; <span class="comment">//empty XML document</span></div> -<div class="line"></div> -<div class="line"> <span class="keywordflow">try</span></div> -<div class="line"> {</div> -<div class="line"> <a class="code" href="namespacezen.html#a872a48c0616e7f12ae8caca464835e00">load</a>(filename, doc); <span class="comment">//throw XmlFileError, XmlParsingError</span></div> -<div class="line"> }</div> -<div class="line"> <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="structzen_1_1_xml_error.html">zen::XmlError</a>& e) { <span class="comment">/* handle error */</span> }</div> -<div class="line"></div> -<div class="line"> <a class="code" href="classzen_1_1_xml_in.html">zen::XmlIn</a> in(doc); </div> -<div class="line"> </div> -<div class="line"> <a class="code" href="classzen_1_1_xml_in.html">zen::XmlIn</a> inConfig = in[<span class="stringliteral">"config"</span>]; <span class="comment">//get input proxy for child element "config"</span></div> -<div class="line"> </div> -<div class="line"> readConfig(inConfig, cfg); <span class="comment">//map child element to user data by calling subroutine</span></div> -<div class="line"></div> -<div class="line"> <span class="comment">//check for mapping errors: errors occuring in subroutines are considered, too!</span></div> -<div class="line"> <span class="keywordflow">if</span> (in.errorsOccured())</div> -<div class="line"> <span class="comment">/* show mapping errors */</span></div> -<div class="line">}</div> -</div><!-- fragment --><h1><a class="anchor" id="sec_Type_Safety"></a> -Type Safety</h1> -<p>zen::Xml heavily uses methods of compile-time introspection in order to free the user from managing basic type conversions by himself. Thereby it is important to find the right balance between automatic conversions and type safety so that program correctness is not compromised. In the context of XML processing three fundamental type categories can be recognized:</p> -<ul> -<li><b>string-like types</b>: <code>std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ...</code></li> -<li><b>to-string-convertible types</b>: any string-like type, all built-in arithmetic numbers, <code>bool</code></li> -<li><b>structured types</b>: any to-string-convertible type, STL containers, <code>std::pair</code>, structured user types</li> -</ul> -<p>These categories can be seen as a sequence of inclusive sets: </p> -<pre class="fragment">----------------------------- -| structured | Used as: XML element value -| ------------------------- | Conversion via: readStruc(), writeStruc() - may be specialized for user-defined types! -| | to-string-convertible | | Used as: XML element/attribute value -| | --------------- | | Conversion via: readText(), writeText() - may be specialized for user-defined types! -| | | string-like | | | Used as: XML element/attribute value or element name -| | --------------- | | Conversion via: utfCvrtTo<>() -| ------------------------- | ------------------------------ -</pre><p>A practical implication of this design is that conversions that do not make sense in a particular context simply lead to compile-time errors: </p> -<div class="fragment"><div class="line"><a class="code" href="classzen_1_1_xml_out.html">zen::XmlOut</a> out(doc);</div> -<div class="line">out[L<span class="charliteral">'Z'</span>](someValue); <span class="comment">//fine: a wchar_t is acceptable as an element name</span></div> -<div class="line">out[1234](someValue); <span class="comment">//compiler error: an integer is NOT "string-like"!</span></div> -</div><!-- fragment --><p> <br/> -</p> -<div class="fragment"><div class="line"><span class="keywordtype">int</span> i = 0;</div> -<div class="line">std::vector<int> v;</div> -<div class="line"></div> -<div class="line"><a class="code" href="classzen_1_1_xml_out.html">zen::XmlOut</a> out(doc);</div> -<div class="line">out[<span class="stringliteral">"elem1"</span>](i); <span class="comment">//fine: both i and v can be converted to an XML element</span></div> -<div class="line">out[<span class="stringliteral">"elem2"</span>](v); <span class="comment">//</span></div> -<div class="line"></div> -<div class="line">out[<span class="stringliteral">"elem"</span>].attribute(<span class="stringliteral">"attr1"</span>, i); <span class="comment">//fine: an integer can be converted to an XML attribute</span></div> -<div class="line">out[<span class="stringliteral">"elem"</span>].attribute(<span class="stringliteral">"attr2"</span>, v); <span class="comment">//compiler error: a std::vector<int> is NOT "to-string-convertible"!</span></div> -</div><!-- fragment --><dl class="section author"><dt>Author</dt><dd><b>Zenju</b> <br/> -<br/> - <b>Email:</b> zenju AT gmx DOT de </dd></dl> -</div></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/io_8h_source.html b/zenxml/doc/io_8h_source.html deleted file mode 100644 index 825df7ca..00000000 --- a/zenxml/doc/io_8h_source.html +++ /dev/null @@ -1,205 +0,0 @@ -<!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>zen::Xml: io.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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_5fe60cdff4f93e8435d81ae38a3e2e18.html">zenxml</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">io.h</div> </div> -</div><!--header--> -<div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// * This file is part of the FreeFileSync project. It is distributed under *</span></div> -<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *</span></div> -<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved *</span></div> -<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div> -<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#ifndef ZEN_XML_IO_HEADER_8917640501480763248343343</span></div> -<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor"></span><span class="preprocessor">#define ZEN_XML_IO_HEADER_8917640501480763248343343</span></div> -<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor"></span></div> -<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <cstdio></span></div> -<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include <cerrno></span></div> -<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include <zen/scope_guard.h></span></div> -<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include <zen/utf.h></span></div> -<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "error.h"</span></div> -<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div> -<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">namespace </span>zen</div> -<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> {</div> -<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#if !defined(ZEN_WIN) && !defined(ZEN_LINUX) && !defined(ZEN_MAC)</span></div> -<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor"></span><span class="preprocessor">#error Please specify your platform: #define ZEN_WIN, ZEN_LINUX or ZEN_MAC</span></div> -<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> -<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor"></span></div> -<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div> -<div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="structzen_1_1_xml_file_error.html"> 29</a></span> <span class="keyword">struct </span><a class="code" href="structzen_1_1_xml_file_error.html">XmlFileError</a> : <span class="keyword">public</span> <a class="code" href="structzen_1_1_xml_error.html">XmlError</a></div> -<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div> -<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">typedef</span> <span class="keywordtype">int</span> ErrorCode;</div> -<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div> -<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">explicit</span> <a class="code" href="structzen_1_1_xml_file_error.html">XmlFileError</a>(ErrorCode ec) : <a class="code" href="structzen_1_1_xml_file_error.html#a4a109e749675a3887af8cfc140303b8f">lastError</a>(ec) {}</div> -<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="structzen_1_1_xml_file_error.html#a4a109e749675a3887af8cfc140303b8f"> 35</a></span>  ErrorCode <a class="code" href="structzen_1_1_xml_file_error.html#a4a109e749675a3887af8cfc140303b8f">lastError</a>;</div> -<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> };</div> -<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div> -<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div> -<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#ifdef ZEN_WIN</span></div> -<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"></span><span class="keyword">namespace </span>implemenation <span class="comment">//sad but true</span></div> -<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div> -<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">template</span> <<span class="keyword">class</span> String> <span class="keyword">inline</span></div> -<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> FILE* fopen(<span class="keyword">const</span> String& filename, <span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* mode)</div> -<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div> -<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#ifdef _MSC_VER</span></div> -<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"></span> FILE* handle = <span class="keyword">nullptr</span>;</div> -<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  errno_t rv = ::_wfopen_s(&handle, utfCvrtTo<std::wstring>(filename).c_str(), mode); <span class="comment">//more secure?</span></div> -<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  (void)rv;</div> -<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> handle;</div> -<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#else</span></div> -<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor"></span> return ::_wfopen(utfCvrtTo<std::wstring>(filename).c_str(), mode);</div> -<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#endif</span></div> -<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor"></span>}</div> -<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div> -<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#endif</span></div> -<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor"></span></div> -<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div> -<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div> -<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespacezen.html#a4ba7bbaa14a787b07fc13da9145aabe2"> 66</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacezen.html#a4ba7bbaa14a787b07fc13da9145aabe2">saveStream</a>(<span class="keyword">const</span> std::string& stream, <span class="keyword">const</span> String& filename) <span class="comment">//throw XmlFileError</span></div> -<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> {</div> -<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#ifdef ZEN_WIN</span></div> -<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor"></span> FILE* handle = implemenation::fopen(utfCvrtTo<std::wstring>(filename).c_str(), L<span class="stringliteral">"wb"</span>);</div> -<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#else</span></div> -<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor"></span> FILE* handle = ::fopen(utfCvrtTo<std::string>(filename).c_str(), <span class="stringliteral">"w"</span>);</div> -<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#endif</span></div> -<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"></span> <span class="keywordflow">if</span> (handle == <span class="keyword">nullptr</span>)</div> -<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">throw</span> <a class="code" href="structzen_1_1_xml_file_error.html">XmlFileError</a>(errno);</div> -<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  ZEN_ON_SCOPE_EXIT(::fclose(handle));</div> -<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div> -<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> bytesWritten = ::fwrite(stream.c_str(), 1, stream.size(), handle);</div> -<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span> (::ferror(handle) != 0)</div> -<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">throw</span> <a class="code" href="structzen_1_1_xml_file_error.html">XmlFileError</a>(errno);</div> -<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div> -<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  (void)bytesWritten;</div> -<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  assert(bytesWritten == stream.size());</div> -<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> }</div> -<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div> -<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div> -<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div> -<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">template</span> <<span class="keyword">class</span> String></div> -<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="namespacezen.html#a04fe23c3bd9b7d03309620b5ea763607"> 94</a></span> std::string <a class="code" href="namespacezen.html#a04fe23c3bd9b7d03309620b5ea763607">loadStream</a>(<span class="keyword">const</span> String& filename) <span class="comment">//throw XmlFileError</span></div> -<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> {</div> -<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">#ifdef ZEN_WIN</span></div> -<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor"></span> FILE* handle = implemenation::fopen(utfCvrtTo<std::wstring>(filename).c_str(), L<span class="stringliteral">"rb"</span>);</div> -<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor">#else</span></div> -<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor"></span> FILE* handle = ::fopen(utfCvrtTo<std::string>(filename).c_str(), <span class="stringliteral">"r"</span>);</div> -<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">#endif</span></div> -<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor"></span> <span class="keywordflow">if</span> (handle == <span class="keyword">nullptr</span>)</div> -<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">throw</span> <a class="code" href="structzen_1_1_xml_file_error.html">XmlFileError</a>(errno);</div> -<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  ZEN_ON_SCOPE_EXIT(::fclose(handle));</div> -<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div> -<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  std::string stream;</div> -<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> blockSize = 64 * 1024;</div> -<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">do</span></div> -<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div> -<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  stream.resize(stream.size() + blockSize); <span class="comment">//let's pray std::string implements exponential growth!</span></div> -<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div> -<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> bytesRead = ::fread(&*(stream.begin() + stream.size() - blockSize), 1, blockSize, handle);</div> -<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span> (::ferror(handle))</div> -<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">throw</span> <a class="code" href="structzen_1_1_xml_file_error.html">XmlFileError</a>(errno);</div> -<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">if</span> (bytesRead > blockSize)</div> -<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">throw</span> <a class="code" href="structzen_1_1_xml_file_error.html">XmlFileError</a>(0);</div> -<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span> (bytesRead < blockSize)</div> -<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  stream.resize(stream.size() - (blockSize - bytesRead)); <span class="comment">//caveat: unsigned arithmetics</span></div> -<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div> -<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">while</span> (!::feof(handle));</div> -<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div> -<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">return</span> stream;</div> -<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> }</div> -<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div> -<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div> -<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor">#endif //ZEN_XML_IO_HEADER_8917640501480763248343343</span></div> -<div class="ttc" id="namespacezen_html_a4ba7bbaa14a787b07fc13da9145aabe2"><div class="ttname"><a href="namespacezen.html#a4ba7bbaa14a787b07fc13da9145aabe2">zen::saveStream</a></div><div class="ttdeci">void saveStream(const std::string &stream, const String &filename)</div><div class="ttdoc">Save byte stream to a file. </div><div class="ttdef"><b>Definition:</b> io.h:66</div></div> -<div class="ttc" id="namespacezen_html_a04fe23c3bd9b7d03309620b5ea763607"><div class="ttname"><a href="namespacezen.html#a04fe23c3bd9b7d03309620b5ea763607">zen::loadStream</a></div><div class="ttdeci">std::string loadStream(const String &filename)</div><div class="ttdoc">Load byte stream from a file. </div><div class="ttdef"><b>Definition:</b> io.h:94</div></div> -<div class="ttc" id="structzen_1_1_xml_file_error_html_a4a109e749675a3887af8cfc140303b8f"><div class="ttname"><a href="structzen_1_1_xml_file_error.html#a4a109e749675a3887af8cfc140303b8f">zen::XmlFileError::lastError</a></div><div class="ttdeci">ErrorCode lastError</div><div class="ttdoc">Native error code: errno. </div><div class="ttdef"><b>Definition:</b> io.h:35</div></div> -<div class="ttc" id="structzen_1_1_xml_file_error_html"><div class="ttname"><a href="structzen_1_1_xml_file_error.html">zen::XmlFileError</a></div><div class="ttdoc">Exception thrown due to failed file I/O. </div><div class="ttdef"><b>Definition:</b> io.h:29</div></div> -<div class="ttc" id="structzen_1_1_xml_error_html"><div class="ttname"><a href="structzen_1_1_xml_error.html">zen::XmlError</a></div><div class="ttdoc">Exception base class for zen::Xml. </div><div class="ttdef"><b>Definition:</b> error.h:13</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/jquery.js b/zenxml/doc/jquery.js deleted file mode 100644 index c197801c..00000000 --- a/zenxml/doc/jquery.js +++ /dev/null @@ -1,31 +0,0 @@ -/*! - * jQuery JavaScript Library v1.7.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Mon Nov 21 21:11:03 2011 -0500 - */ -(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv)) -}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType; -if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false -}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1 -},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ac=a(av); -ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length; -if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1) -}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b -})}})(window); diff --git a/zenxml/doc/namespacemembers.html b/zenxml/doc/namespacemembers.html deleted file mode 100644 index 9703003f..00000000 --- a/zenxml/doc/namespacemembers.html +++ /dev/null @@ -1,130 +0,0 @@ -<!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>zen::Xml: Namespace Members</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li> - <li><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="namespaces.html"><span>Namespace List</span></a></li> - <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li> - </ul> - </div> - <div id="navrow3" class="tabs2"> - <ul class="tablist"> - <li class="current"><a href="namespacemembers.html"><span>All</span></a></li> - <li><a href="namespacemembers_func.html"><span>Functions</span></a></li> - </ul> - </div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> -<div class="textblock">Here is a list of all documented namespace members with links to the namespaces they belong to:</div><ul> -<li>load() -: <a class="el" href="namespacezen.html#a872a48c0616e7f12ae8caca464835e00">zen</a> -</li> -<li>loadStream() -: <a class="el" href="namespacezen.html#a04fe23c3bd9b7d03309620b5ea763607">zen</a> -</li> -<li>parse() -: <a class="el" href="namespacezen.html#a1ae1a4688d724b554fe3bf4638700477">zen</a> -</li> -<li>readStruc() -: <a class="el" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">zen</a> -</li> -<li>readText() -: <a class="el" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">zen</a> -</li> -<li>save() -: <a class="el" href="namespacezen.html#adeeb6b2318097382ae47aa939fc15d4d">zen</a> -</li> -<li>saveStream() -: <a class="el" href="namespacezen.html#a4ba7bbaa14a787b07fc13da9145aabe2">zen</a> -</li> -<li>serialize() -: <a class="el" href="namespacezen.html#afaa4920e275078e6c8009fbdf58b57ee">zen</a> -</li> -<li>writeStruc() -: <a class="el" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">zen</a> -</li> -<li>writeText() -: <a class="el" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">zen</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/namespacemembers_func.html b/zenxml/doc/namespacemembers_func.html deleted file mode 100644 index 30987dd8..00000000 --- a/zenxml/doc/namespacemembers_func.html +++ /dev/null @@ -1,130 +0,0 @@ -<!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>zen::Xml: Namespace Members</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li> - <li><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="namespaces.html"><span>Namespace List</span></a></li> - <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li> - </ul> - </div> - <div id="navrow3" class="tabs2"> - <ul class="tablist"> - <li><a href="namespacemembers.html"><span>All</span></a></li> - <li class="current"><a href="namespacemembers_func.html"><span>Functions</span></a></li> - </ul> - </div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="contents"> - <ul> -<li>load() -: <a class="el" href="namespacezen.html#a872a48c0616e7f12ae8caca464835e00">zen</a> -</li> -<li>loadStream() -: <a class="el" href="namespacezen.html#a04fe23c3bd9b7d03309620b5ea763607">zen</a> -</li> -<li>parse() -: <a class="el" href="namespacezen.html#a1ae1a4688d724b554fe3bf4638700477">zen</a> -</li> -<li>readStruc() -: <a class="el" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">zen</a> -</li> -<li>readText() -: <a class="el" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">zen</a> -</li> -<li>save() -: <a class="el" href="namespacezen.html#adeeb6b2318097382ae47aa939fc15d4d">zen</a> -</li> -<li>saveStream() -: <a class="el" href="namespacezen.html#a4ba7bbaa14a787b07fc13da9145aabe2">zen</a> -</li> -<li>serialize() -: <a class="el" href="namespacezen.html#afaa4920e275078e6c8009fbdf58b57ee">zen</a> -</li> -<li>writeStruc() -: <a class="el" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">zen</a> -</li> -<li>writeText() -: <a class="el" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">zen</a> -</li> -</ul> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/namespaces.html b/zenxml/doc/namespaces.html deleted file mode 100644 index 6a23f6a0..00000000 --- a/zenxml/doc/namespaces.html +++ /dev/null @@ -1,101 +0,0 @@ -<!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>zen::Xml: Namespace List</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li> - <li><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li class="current"><a href="namespaces.html"><span>Namespace List</span></a></li> - <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li> - </ul> - </div> -</div><!-- top --> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div class="header"> - <div class="headertitle"> -<div class="title">Namespace List</div> </div> -</div><!--header--> -<div class="contents"> -<div class="textblock">Here is a list of all documented namespaces with brief descriptions:</div><div class="directory"> -<table class="directory"> -<tr id="row_0_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespacezen.html" target="_self">zen</a></td><td class="desc">The zen::Xml namespace </td></tr> -</table> -</div><!-- directory --> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/namespacezen.html b/zenxml/doc/namespacezen.html deleted file mode 100644 index 1d961e87..00000000 --- a/zenxml/doc/namespacezen.html +++ /dev/null @@ -1,588 +0,0 @@ -<!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>zen::Xml: zen Namespace Reference</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li> - <li><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="namespaces.html"><span>Namespace List</span></a></li> - <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#nested-classes">Classes</a> | -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">zen Namespace Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>The zen::Xml namespace. -<a href="#details">More...</a></p> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> -Classes</h2></td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_out.html">XmlOut</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Proxy class to conveniently convert user data into XML structure. <a href="classzen_1_1_xml_out.html#details">More...</a><br/></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_in.html">XmlIn</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Proxy class to conveniently convert XML structure to user data. <a href="classzen_1_1_xml_in.html#details">More...</a><br/></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_element.html">XmlElement</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">An XML element. <a href="classzen_1_1_xml_element.html#details">More...</a><br/></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classzen_1_1_xml_doc.html">XmlDoc</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The complete XML document. <a href="classzen_1_1_xml_doc.html#details">More...</a><br/></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structzen_1_1_xml_error.html">XmlError</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Exception base class for zen::Xml. <a href="structzen_1_1_xml_error.html#details">More...</a><br/></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structzen_1_1_xml_file_error.html">XmlFileError</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Exception thrown due to failed file I/O. <a href="structzen_1_1_xml_file_error.html#details">More...</a><br/></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structzen_1_1_xml_parsing_error.html">XmlParsingError</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Exception thrown due to an XML parsing error. <a href="structzen_1_1_xml_parsing_error.html#details">More...</a><br/></td></tr> -<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -</table><table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:a872a48c0616e7f12ae8caca464835e00"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a872a48c0616e7f12ae8caca464835e00"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classzen_1_1_xml_doc.html">XmlDoc</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacezen.html#a872a48c0616e7f12ae8caca464835e00">load</a> (const String &filename)</td></tr> -<tr class="memdesc:a872a48c0616e7f12ae8caca464835e00"><td class="mdescLeft"> </td><td class="mdescRight">Load XML document from a file. <a href="#a872a48c0616e7f12ae8caca464835e00">More...</a><br/></td></tr> -<tr class="separator:a872a48c0616e7f12ae8caca464835e00"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:adeeb6b2318097382ae47aa939fc15d4d"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:adeeb6b2318097382ae47aa939fc15d4d"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacezen.html#adeeb6b2318097382ae47aa939fc15d4d">save</a> (const <a class="el" href="classzen_1_1_xml_doc.html">XmlDoc</a> &doc, const String &filename, const std::string &lineBreak="\r\n", const std::string &indent=" ")</td></tr> -<tr class="memdesc:adeeb6b2318097382ae47aa939fc15d4d"><td class="mdescLeft"> </td><td class="mdescRight">Save XML document to a file. <a href="#adeeb6b2318097382ae47aa939fc15d4d">More...</a><br/></td></tr> -<tr class="separator:adeeb6b2318097382ae47aa939fc15d4d"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2bdcecfe7435ef11cedbce47d4e72ee1"><td class="memTemplParams" colspan="2">template<class T > </td></tr> -<tr class="memitem:a2bdcecfe7435ef11cedbce47d4e72ee1"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacezen.html#a2bdcecfe7435ef11cedbce47d4e72ee1">readStruc</a> (const <a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> &input, T &value)</td></tr> -<tr class="memdesc:a2bdcecfe7435ef11cedbce47d4e72ee1"><td class="mdescLeft"> </td><td class="mdescRight">Convert XML element to structured user data. <a href="#a2bdcecfe7435ef11cedbce47d4e72ee1">More...</a><br/></td></tr> -<tr class="separator:a2bdcecfe7435ef11cedbce47d4e72ee1"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a29ddb823fe0a195f19a64448881b8bf6"><td class="memTemplParams" colspan="2">template<class T > </td></tr> -<tr class="memitem:a29ddb823fe0a195f19a64448881b8bf6"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacezen.html#a29ddb823fe0a195f19a64448881b8bf6">writeStruc</a> (const T &value, <a class="el" href="classzen_1_1_xml_element.html">XmlElement</a> &output)</td></tr> -<tr class="memdesc:a29ddb823fe0a195f19a64448881b8bf6"><td class="mdescLeft"> </td><td class="mdescRight">Convert structured user data into an XML element. <a href="#a29ddb823fe0a195f19a64448881b8bf6">More...</a><br/></td></tr> -<tr class="separator:a29ddb823fe0a195f19a64448881b8bf6"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:acaf85ab94b61882f957afcd355386bff"><td class="memTemplParams" colspan="2">template<class T > </td></tr> -<tr class="memitem:acaf85ab94b61882f957afcd355386bff"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacezen.html#acaf85ab94b61882f957afcd355386bff">readText</a> (const std::string &input, T &value)</td></tr> -<tr class="memdesc:acaf85ab94b61882f957afcd355386bff"><td class="mdescLeft"> </td><td class="mdescRight">Convert text to user data - used by XML elements and attributes. <a href="#acaf85ab94b61882f957afcd355386bff">More...</a><br/></td></tr> -<tr class="separator:acaf85ab94b61882f957afcd355386bff"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2ce2998296871fc2f4718ceceb22a23f"><td class="memTemplParams" colspan="2">template<class T > </td></tr> -<tr class="memitem:a2ce2998296871fc2f4718ceceb22a23f"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacezen.html#a2ce2998296871fc2f4718ceceb22a23f">writeText</a> (const T &value, std::string &output)</td></tr> -<tr class="memdesc:a2ce2998296871fc2f4718ceceb22a23f"><td class="mdescLeft"> </td><td class="mdescRight">Convert user data into text - used by XML elements and attributes. <a href="#a2ce2998296871fc2f4718ceceb22a23f">More...</a><br/></td></tr> -<tr class="separator:a2ce2998296871fc2f4718ceceb22a23f"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4ba7bbaa14a787b07fc13da9145aabe2"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a4ba7bbaa14a787b07fc13da9145aabe2"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacezen.html#a4ba7bbaa14a787b07fc13da9145aabe2">saveStream</a> (const std::string &stream, const String &filename)</td></tr> -<tr class="memdesc:a4ba7bbaa14a787b07fc13da9145aabe2"><td class="mdescLeft"> </td><td class="mdescRight">Save byte stream to a file. <a href="#a4ba7bbaa14a787b07fc13da9145aabe2">More...</a><br/></td></tr> -<tr class="separator:a4ba7bbaa14a787b07fc13da9145aabe2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a04fe23c3bd9b7d03309620b5ea763607"><td class="memTemplParams" colspan="2">template<class String > </td></tr> -<tr class="memitem:a04fe23c3bd9b7d03309620b5ea763607"><td class="memTemplItemLeft" align="right" valign="top">std::string </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacezen.html#a04fe23c3bd9b7d03309620b5ea763607">loadStream</a> (const String &filename)</td></tr> -<tr class="memdesc:a04fe23c3bd9b7d03309620b5ea763607"><td class="mdescLeft"> </td><td class="mdescRight">Load byte stream from a file. <a href="#a04fe23c3bd9b7d03309620b5ea763607">More...</a><br/></td></tr> -<tr class="separator:a04fe23c3bd9b7d03309620b5ea763607"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:afaa4920e275078e6c8009fbdf58b57ee"><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacezen.html#afaa4920e275078e6c8009fbdf58b57ee">serialize</a> (const <a class="el" href="classzen_1_1_xml_doc.html">XmlDoc</a> &doc, const std::string &lineBreak="\r\n", const std::string &indent=" ")</td></tr> -<tr class="memdesc:afaa4920e275078e6c8009fbdf58b57ee"><td class="mdescLeft"> </td><td class="mdescRight">Save XML document as a byte stream. <a href="#afaa4920e275078e6c8009fbdf58b57ee">More...</a><br/></td></tr> -<tr class="separator:afaa4920e275078e6c8009fbdf58b57ee"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a1ae1a4688d724b554fe3bf4638700477"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classzen_1_1_xml_doc.html">XmlDoc</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacezen.html#a1ae1a4688d724b554fe3bf4638700477">parse</a> (const std::string &stream)</td></tr> -<tr class="memdesc:a1ae1a4688d724b554fe3bf4638700477"><td class="mdescLeft"> </td><td class="mdescRight">Load XML document from a byte stream. <a href="#a1ae1a4688d724b554fe3bf4638700477">More...</a><br/></td></tr> -<tr class="separator:a1ae1a4688d724b554fe3bf4638700477"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>The zen::Xml namespace. </p> -</div><h2 class="groupheader">Function Documentation</h2> -<a class="anchor" id="a872a48c0616e7f12ae8caca464835e00"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="classzen_1_1_xml_doc.html">XmlDoc</a> zen::load </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>filename</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Load XML document from a file. </p> -<p>Convenience function that does nothing more than calling <a class="el" href="namespacezen.html#a04fe23c3bd9b7d03309620b5ea763607" title="Load byte stream from a file. ">loadStream()</a> and <a class="el" href="namespacezen.html#a1ae1a4688d724b554fe3bf4638700477" title="Load XML document from a byte stream. ">parse()</a>.</p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">filename</td><td>Input file name </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>The loaded XML document </dd></dl> -<dl class="exception"><dt>Exceptions</dt><dd> - <table class="exception"> - <tr><td class="paramname"><a class="el" href="structzen_1_1_xml_file_error.html" title="Exception thrown due to failed file I/O. ">XmlFileError</a></td><td></td></tr> - <tr><td class="paramname"><a class="el" href="structzen_1_1_xml_parsing_error.html" title="Exception thrown due to an XML parsing error. ">XmlParsingError</a></td><td></td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a class="anchor" id="a04fe23c3bd9b7d03309620b5ea763607"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">std::string zen::loadStream </td> - <td>(</td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>filename</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Load byte stream from a file. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">filename</td><td>Input file name </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>Output byte stream </dd></dl> -<dl class="exception"><dt>Exceptions</dt><dd> - <table class="exception"> - <tr><td class="paramname"><a class="el" href="structzen_1_1_xml_file_error.html" title="Exception thrown due to failed file I/O. ">XmlFileError</a></td><td></td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a class="anchor" id="a1ae1a4688d724b554fe3bf4638700477"></a> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="classzen_1_1_xml_doc.html">XmlDoc</a> zen::parse </td> - <td>(</td> - <td class="paramtype">const std::string & </td> - <td class="paramname"><em>stream</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Load XML document from a byte stream. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stream</td><td>Input byte stream </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>Output XML document </dd></dl> -<dl class="exception"><dt>Exceptions</dt><dd> - <table class="exception"> - <tr><td class="paramname"><a class="el" href="structzen_1_1_xml_parsing_error.html" title="Exception thrown due to an XML parsing error. ">XmlParsingError</a></td><td></td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a class="anchor" id="a2bdcecfe7435ef11cedbce47d4e72ee1"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class T > </div> - <table class="memname"> - <tr> - <td class="memname">bool zen::readStruc </td> - <td>(</td> - <td class="paramtype">const XmlElement & </td> - <td class="paramname"><em>input</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">T & </td> - <td class="paramname"><em>value</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Convert XML element to structured user data. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">input</td><td>The input XML element. </td></tr> - <tr><td class="paramname">value</td><td>Conversion target value. </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>"true" if value was read successfully. </dd></dl> - -</div> -</div> -<a class="anchor" id="acaf85ab94b61882f957afcd355386bff"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class T > </div> - <table class="memname"> - <tr> - <td class="memname">bool zen::readText </td> - <td>(</td> - <td class="paramtype">const std::string & </td> - <td class="paramname"><em>input</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">T & </td> - <td class="paramname"><em>value</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Convert text to user data - used by XML elements and attributes. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">input</td><td>Input text. </td></tr> - <tr><td class="paramname">value</td><td>Conversion target value. </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>"true" if value was read successfully. </dd></dl> - -</div> -</div> -<a class="anchor" id="adeeb6b2318097382ae47aa939fc15d4d"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">void zen::save </td> - <td>(</td> - <td class="paramtype">const XmlDoc & </td> - <td class="paramname"><em>doc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>filename</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const std::string & </td> - <td class="paramname"><em>lineBreak</em> = <code>"\r\n"</code>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const std::string & </td> - <td class="paramname"><em>indent</em> = <code>"    "</code> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Save XML document to a file. </p> -<p>Convenience function that does nothing more than calling <a class="el" href="namespacezen.html#afaa4920e275078e6c8009fbdf58b57ee" title="Save XML document as a byte stream. ">serialize()</a> and <a class="el" href="namespacezen.html#a4ba7bbaa14a787b07fc13da9145aabe2" title="Save byte stream to a file. ">saveStream()</a>.</p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">doc</td><td>The XML document to save </td></tr> - <tr><td class="paramname">filename</td><td>Output file name </td></tr> - <tr><td class="paramname">lineBreak</td><td>Line break, default: carriage return + new line </td></tr> - <tr><td class="paramname">indent</td><td>Indentation, default: four space characters </td></tr> - </table> - </dd> -</dl> -<dl class="exception"><dt>Exceptions</dt><dd> - <table class="exception"> - <tr><td class="paramname"><a class="el" href="structzen_1_1_xml_file_error.html" title="Exception thrown due to failed file I/O. ">XmlFileError</a></td><td></td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a class="anchor" id="a4ba7bbaa14a787b07fc13da9145aabe2"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class String > </div> - <table class="memname"> - <tr> - <td class="memname">void zen::saveStream </td> - <td>(</td> - <td class="paramtype">const std::string & </td> - <td class="paramname"><em>stream</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const String & </td> - <td class="paramname"><em>filename</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Save byte stream to a file. </p> -<dl class="tparams"><dt>Template Parameters</dt><dd> - <table class="tparams"> - <tr><td class="paramname">String</td><td>Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... </td></tr> - </table> - </dd> -</dl> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">stream</td><td>Input byte stream </td></tr> - <tr><td class="paramname">filename</td><td>Output file name </td></tr> - </table> - </dd> -</dl> -<dl class="exception"><dt>Exceptions</dt><dd> - <table class="exception"> - <tr><td class="paramname"><a class="el" href="structzen_1_1_xml_file_error.html" title="Exception thrown due to failed file I/O. ">XmlFileError</a></td><td></td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a class="anchor" id="afaa4920e275078e6c8009fbdf58b57ee"></a> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname">std::string zen::serialize </td> - <td>(</td> - <td class="paramtype">const XmlDoc & </td> - <td class="paramname"><em>doc</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const std::string & </td> - <td class="paramname"><em>lineBreak</em> = <code>"\r\n"</code>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">const std::string & </td> - <td class="paramname"><em>indent</em> = <code>"    "</code> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Save XML document as a byte stream. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">doc</td><td>Input XML document </td></tr> - <tr><td class="paramname">lineBreak</td><td>Line break, default: carriage return + new line </td></tr> - <tr><td class="paramname">indent</td><td>Indentation, default: four space characters </td></tr> - </table> - </dd> -</dl> -<dl class="section return"><dt>Returns</dt><dd>Output byte stream </dd></dl> - -</div> -</div> -<a class="anchor" id="a29ddb823fe0a195f19a64448881b8bf6"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class T > </div> - <table class="memname"> - <tr> - <td class="memname">void zen::writeStruc </td> - <td>(</td> - <td class="paramtype">const T & </td> - <td class="paramname"><em>value</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">XmlElement & </td> - <td class="paramname"><em>output</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Convert structured user data into an XML element. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">value</td><td>The value to be converted. </td></tr> - <tr><td class="paramname">output</td><td>The output XML element. </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -<a class="anchor" id="a2ce2998296871fc2f4718ceceb22a23f"></a> -<div class="memitem"> -<div class="memproto"> -<div class="memtemplate"> -template<class T > </div> - <table class="memname"> - <tr> - <td class="memname">void zen::writeText </td> - <td>(</td> - <td class="paramtype">const T & </td> - <td class="paramname"><em>value</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">std::string & </td> - <td class="paramname"><em>output</em> </td> - </tr> - <tr> - <td></td> - <td>)</td> - <td></td><td></td> - </tr> - </table> -</div><div class="memdoc"> - -<p>Convert user data into text - used by XML elements and attributes. </p> -<dl class="params"><dt>Parameters</dt><dd> - <table class="params"> - <tr><td class="paramname">value</td><td>The value to be converted. </td></tr> - <tr><td class="paramname">output</td><td>Output text. </td></tr> - </table> - </dd> -</dl> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/nav_f.png b/zenxml/doc/nav_f.png Binary files differdeleted file mode 100644 index 72a58a52..00000000 --- a/zenxml/doc/nav_f.png +++ /dev/null diff --git a/zenxml/doc/nav_h.png b/zenxml/doc/nav_h.png Binary files differdeleted file mode 100644 index 33389b10..00000000 --- a/zenxml/doc/nav_h.png +++ /dev/null diff --git a/zenxml/doc/open.png b/zenxml/doc/open.png Binary files differdeleted file mode 100644 index 30f75c7e..00000000 --- a/zenxml/doc/open.png +++ /dev/null diff --git a/zenxml/doc/parser_8h_source.html b/zenxml/doc/parser_8h_source.html deleted file mode 100644 index d049c188..00000000 --- a/zenxml/doc/parser_8h_source.html +++ /dev/null @@ -1,700 +0,0 @@ -<!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>zen::Xml: parser.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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_5fe60cdff4f93e8435d81ae38a3e2e18.html">zenxml</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">parser.h</div> </div> -</div><!--header--> -<div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// * This file is part of the FreeFileSync project. It is distributed under *</span></div> -<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *</span></div> -<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved *</span></div> -<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div> -<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#ifndef ZEN_XML_PARSER_HEADER_81248670213764583021432</span></div> -<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor"></span><span class="preprocessor">#define ZEN_XML_PARSER_HEADER_81248670213764583021432</span></div> -<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor"></span></div> -<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <cstdio></span></div> -<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include <cstddef></span> <span class="comment">//ptrdiff_t; req. on Linux</span></div> -<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include <zen/string_traits.h></span></div> -<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "dom.h"</span></div> -<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "error.h"</span></div> -<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div> -<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">namespace </span>zen</div> -<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> {</div> -<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div> -<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> std::string <a class="code" href="namespacezen.html#afaa4920e275078e6c8009fbdf58b57ee">serialize</a>(<span class="keyword">const</span> XmlDoc& doc,</div> -<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">const</span> std::string& lineBreak = <span class="stringliteral">"\r\n"</span>,</div> -<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">const</span> std::string& indent = <span class="stringliteral">" "</span>); <span class="comment">//throw ()</span></div> -<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div> -<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="structzen_1_1_xml_parsing_error.html"> 35</a></span> <span class="keyword">struct </span><a class="code" href="structzen_1_1_xml_parsing_error.html">XmlParsingError</a> : <span class="keyword">public</span> <a class="code" href="structzen_1_1_xml_error.html">XmlError</a></div> -<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div> -<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="structzen_1_1_xml_parsing_error.html">XmlParsingError</a>(<span class="keywordtype">size_t</span> rowNo, <span class="keywordtype">size_t</span> colNo) : <a class="code" href="structzen_1_1_xml_parsing_error.html#a3ed4cd1b5599df9b52500f620421496e">row</a>(rowNo), <a class="code" href="structzen_1_1_xml_parsing_error.html#a4a37dc48883337499804a9dc791669fd">col</a>(colNo) {}</div> -<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="structzen_1_1_xml_parsing_error.html#a3ed4cd1b5599df9b52500f620421496e"> 39</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structzen_1_1_xml_parsing_error.html#a3ed4cd1b5599df9b52500f620421496e">row</a>; <span class="comment">//beginning with 0</span></div> -<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="structzen_1_1_xml_parsing_error.html#a4a37dc48883337499804a9dc791669fd"> 41</a></span> <span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="structzen_1_1_xml_parsing_error.html#a4a37dc48883337499804a9dc791669fd">col</a>; <span class="comment">//</span></div> -<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> };</div> -<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div> -<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div> -<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div> -<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <a class="code" href="classzen_1_1_xml_doc.html">XmlDoc</a> <a class="code" href="namespacezen.html#a1ae1a4688d724b554fe3bf4638700477">parse</a>(<span class="keyword">const</span> std::string& stream); <span class="comment">//throw XmlParsingError</span></div> -<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div> -<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div> -<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div> -<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div> -<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div> -<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div> -<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div> -<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div> -<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div> -<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div> -<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div> -<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div> -<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div> -<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div> -<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div> -<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div> -<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div> -<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div> -<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div> -<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div> -<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">//---------------------------- implementation ----------------------------</span></div> -<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">//see: http://www.w3.org/TR/xml/</span></div> -<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div> -<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">namespace </span>implementation</div> -<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> {</div> -<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">inline</span></div> -<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> std::pair<char, char> hexify(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c)</div> -<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> {</div> -<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">auto</span> hexifyDigit = [](<span class="keywordtype">int</span> num) -> <span class="keywordtype">char</span> <span class="comment">//input [0, 15], output 0-9, A-F</span></div> -<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div> -<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  assert(0 <= num&& num <= 15); <span class="comment">//guaranteed by design below!</span></div> -<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">char</span><span class="keyword">></span>(num <= 9 ? <span class="comment">//no signed/unsigned char problem here!</span></div> -<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="charliteral">'0'</span> + num :</div> -<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="charliteral">'A'</span> + (num - 10));</div> -<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  };</div> -<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> std::make_pair(hexifyDigit(c / 16), hexifyDigit(c % 16));</div> -<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> }</div> -<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div> -<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div> -<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="keyword">inline</span></div> -<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keywordtype">char</span> unhexify(<span class="keywordtype">char</span> high, <span class="keywordtype">char</span> low)</div> -<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> {</div> -<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">auto</span> unhexifyDigit = [](<span class="keywordtype">char</span> hex) -> <span class="keywordtype">int</span> <span class="comment">//input 0-9, a-f, A-F; output range: [0, 15]</span></div> -<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  {</div> -<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span> (<span class="charliteral">'0'</span> <= hex && hex <= <span class="charliteral">'9'</span>) <span class="comment">//no signed/unsigned char problem here!</span></div> -<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> hex - <span class="charliteral">'0'</span>;</div> -<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="charliteral">'A'</span> <= hex && hex <= <span class="charliteral">'F'</span>)</div> -<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> (hex - <span class="charliteral">'A'</span>) + 10;</div> -<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="charliteral">'a'</span> <= hex && hex <= <span class="charliteral">'f'</span>)</div> -<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> (hex - <span class="charliteral">'a'</span>) + 10;</div> -<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  assert(<span class="keyword">false</span>);</div> -<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> 0;</div> -<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  };</div> -<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">></span>(16 * unhexifyDigit(high) + unhexifyDigit(low)); <span class="comment">//[!] convert to unsigned char first, then to char (which may be signed)</span></div> -<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> };</div> -<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div> -<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div> -<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="keyword">template</span> <<span class="keyword">class</span> Predicate> <span class="keyword">inline</span></div> -<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> std::string normalize(<span class="keyword">const</span> std::string& str, Predicate pred) <span class="comment">//pred: unary function taking a char, return true if value shall be encoded as hex</span></div> -<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> {</div> -<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  std::string output;</div> -<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  std::for_each(str.begin(), str.end(),</div> -<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  [&](<span class="keywordtype">char</span> c)</div> -<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  {</div> -<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span> (c == <span class="charliteral">'&'</span>) <span class="comment">//</span></div> -<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  output += <span class="stringliteral">"&amp;"</span>;</div> -<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c == <span class="charliteral">'<'</span>) <span class="comment">//normalization mandatory: http://www.w3.org/TR/xml/#syntax</span></div> -<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  output += <span class="stringliteral">"&lt;"</span>;</div> -<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c == <span class="charliteral">'>'</span>) <span class="comment">//</span></div> -<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  output += <span class="stringliteral">"&gt;"</span>;</div> -<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pred(c))</div> -<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  {</div> -<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span> (c == <span class="charliteral">'\''</span>)</div> -<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  output += <span class="stringliteral">"&apos;"</span>;</div> -<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c == <span class="charliteral">'\"'</span>)</div> -<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  output += <span class="stringliteral">"&quot;"</span>;</div> -<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">else</span></div> -<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div> -<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  output += <span class="stringliteral">"&#x"</span>;</div> -<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">const</span> <span class="keyword">auto</span> hexDigits = hexify(c); <span class="comment">//hexify beats "printNumber<std::string>("&#x%02X;", c)" by a nice factor of 3!</span></div> -<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  output += hexDigits.first;</div> -<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  output += hexDigits.second;</div> -<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  output += <span class="charliteral">';'</span>;</div> -<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div> -<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div> -<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">else</span></div> -<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  output += c;</div> -<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  });</div> -<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">return</span> output;</div> -<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> }</div> -<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div> -<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="keyword">inline</span></div> -<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> std::string normalizeName(<span class="keyword">const</span> std::string& str)</div> -<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> {</div> -<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> normalize(str, [](<span class="keywordtype">char</span> c) { <span class="keywordflow">return</span> isWhiteSpace(c) || c == <span class="charliteral">'='</span> || c == <span class="charliteral">'/'</span> || c == <span class="charliteral">'\''</span> || c == <span class="charliteral">'\"'</span>; });</div> -<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> }</div> -<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div> -<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="keyword">inline</span></div> -<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> std::string normalizeElementValue(<span class="keyword">const</span> std::string& str)</div> -<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> {</div> -<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">return</span> normalize(str, [](<span class="keywordtype">char</span> c) { <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">></span>(c) < 32; });</div> -<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> }</div> -<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div> -<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="keyword">inline</span></div> -<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> std::string normalizeAttribValue(<span class="keyword">const</span> std::string& str)</div> -<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> {</div> -<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> normalize(str, [](<span class="keywordtype">char</span> c) { <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">></span>(c) < 32 || c == <span class="charliteral">'\''</span> || c == <span class="charliteral">'\"'</span>; });</div> -<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> }</div> -<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div> -<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div> -<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="keyword">template</span> <<span class="keyword">class</span> CharIterator, <span class="keywordtype">size_t</span> N> <span class="keyword">inline</span></div> -<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keywordtype">bool</span> checkEntity(CharIterator& first, CharIterator last, <span class="keyword">const</span> <span class="keywordtype">char</span> (&placeholder)[N])</div> -<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> {</div> -<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  assert(placeholder[N - 1] == 0);</div> -<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">const</span> ptrdiff_t strLen = N - 1; <span class="comment">//don't count null-terminator</span></div> -<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span> (last - first >= strLen && std::equal(first, first + strLen, placeholder))</div> -<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  {</div> -<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  first += strLen - 1;</div> -<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> -<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div> -<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> -<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> }</div> -<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div> -<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div> -<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keyword">namespace</span></div> -<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> {</div> -<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> std::string denormalize(<span class="keyword">const</span> std::string& str)</div> -<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> {</div> -<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  std::string output;</div> -<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = str.begin(); it != str.end(); ++it)</div> -<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div> -<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> c = *it;</div> -<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div> -<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">if</span> (c == <span class="charliteral">'&'</span>)</div> -<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {</div> -<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">if</span> (checkEntity(it, str.end(), <span class="stringliteral">"&amp;"</span>))</div> -<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  output += <span class="charliteral">'&'</span>;</div> -<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (checkEntity(it, str.end(), <span class="stringliteral">"&lt;"</span>))</div> -<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  output += <span class="charliteral">'<'</span>;</div> -<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (checkEntity(it, str.end(), <span class="stringliteral">"&gt;"</span>))</div> -<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  output += <span class="charliteral">'>'</span>;</div> -<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (checkEntity(it, str.end(), <span class="stringliteral">"&apos;"</span>))</div> -<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  output += <span class="charliteral">'\''</span>;</div> -<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (checkEntity(it, str.end(), <span class="stringliteral">"&quot;"</span>))</div> -<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  output += <span class="charliteral">'\"'</span>;</div> -<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (str.end() - it >= 6 &&</div> -<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  it[1] == <span class="charliteral">'#'</span> &&</div> -<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  it[2] == <span class="charliteral">'x'</span> &&</div> -<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  it[5] == <span class="charliteral">';'</span>)</div> -<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div> -<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  output += unhexify(it[3], it[4]); <span class="comment">//unhexify beats "::sscanf(&it[3], "%02X", &tmp)" by a factor of 3000 for ~250000 calls!!!</span></div> -<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  it += 5;</div> -<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div> -<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">else</span></div> -<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  output += c; <span class="comment">//unexpected char!</span></div> -<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div> -<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c == <span class="charliteral">'\r'</span>) <span class="comment">//map all end-of-line characters to \n http://www.w3.org/TR/xml/#sec-line-ends</span></div> -<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  {</div> -<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keyword">auto</span> itNext = it + 1;</div> -<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span> (itNext != str.end() && *itNext == <span class="charliteral">'\n'</span>)</div> -<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  ++it;</div> -<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  output += <span class="charliteral">'\n'</span>;</div> -<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div> -<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">else</span></div> -<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  output += c;</div> -<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  };</div> -<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">return</span> output;</div> -<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> }</div> -<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div> -<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div> -<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="keywordtype">void</span> <a class="code" href="namespacezen.html#afaa4920e275078e6c8009fbdf58b57ee">serialize</a>(<span class="keyword">const</span> XmlElement& element, std::string& stream,</div> -<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keyword">const</span> std::string& lineBreak,</div> -<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keyword">const</span> std::string& indent,</div> -<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordtype">size_t</span> indentLevel)</div> -<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> {</div> -<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keyword">const</span> std::string& nameFmt = normalizeName(element.getNameAs<std::string>());</div> -<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div> -<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < indentLevel; ++i)</div> -<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  stream += indent;</div> -<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div> -<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  stream += <span class="charliteral">'<'</span> + nameFmt;</div> -<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div> -<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keyword">auto</span> attr = element.getAttributes();</div> -<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = attr.first; it != attr.second; ++it)</div> -<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  stream += <span class="charliteral">' '</span> + normalizeName(it->first) + <span class="stringliteral">"=\""</span> + normalizeAttribValue(it->second) + <span class="charliteral">'\"'</span>;</div> -<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div> -<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">//no support for mixed-mode content</span></div> -<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keyword">auto</span> iterPair = element.getChildren();</div> -<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">if</span> (iterPair.first != iterPair.second) <span class="comment">//structured element</span></div> -<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  {</div> -<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  stream += <span class="charliteral">'>'</span> + lineBreak;</div> -<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div> -<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  std::for_each(iterPair.first, iterPair.second,</div> -<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  [&](<span class="keyword">const</span> XmlElement & el) { <a class="code" href="namespacezen.html#afaa4920e275078e6c8009fbdf58b57ee">serialize</a>(el, stream, lineBreak, indent, indentLevel + 1); });</div> -<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div> -<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < indentLevel; ++i)</div> -<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  stream += indent;</div> -<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  stream += <span class="stringliteral">"</"</span> + nameFmt + <span class="charliteral">'>'</span> + lineBreak;</div> -<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div> -<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">else</span></div> -<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  {</div> -<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  std::string value;</div> -<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  element.getValue(value);</div> -<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div> -<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">if</span> (!value.empty()) <span class="comment">//value element</span></div> -<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  stream += <span class="charliteral">'>'</span> + normalizeElementValue(value) + <span class="stringliteral">"</"</span> + nameFmt + <span class="charliteral">'>'</span> + lineBreak;</div> -<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">else</span> <span class="comment">//empty element</span></div> -<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  stream += <span class="stringliteral">"/>"</span> + lineBreak;</div> -<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div> -<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> }</div> -<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div> -<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> std::string <a class="code" href="namespacezen.html#afaa4920e275078e6c8009fbdf58b57ee">serialize</a>(<span class="keyword">const</span> XmlDoc& doc,</div> -<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keyword">const</span> std::string& lineBreak,</div> -<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keyword">const</span> std::string& indent)</div> -<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> {</div> -<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  std::string version = doc.getVersionAs<std::string>();</div> -<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span> (!version.empty())</div> -<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  version = <span class="stringliteral">" version=\""</span> + normalizeAttribValue(version) + <span class="charliteral">'\"'</span>;</div> -<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div> -<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  std::string encoding = doc.getEncodingAs<std::string>();</div> -<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">if</span> (!encoding.empty())</div> -<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  encoding = <span class="stringliteral">" encoding=\""</span> + normalizeAttribValue(encoding) + <span class="charliteral">'\"'</span>;</div> -<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div> -<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  std::string standalone = doc.getStandaloneAs<std::string>();</div> -<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span> (!standalone.empty())</div> -<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  standalone = <span class="stringliteral">" standalone=\""</span> + normalizeAttribValue(standalone) + <span class="charliteral">'\"'</span>;</div> -<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div> -<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  std::string output = <span class="stringliteral">"<?xml"</span> + version + encoding + standalone + <span class="stringliteral">"?>"</span> + lineBreak;</div> -<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="namespacezen.html#afaa4920e275078e6c8009fbdf58b57ee">serialize</a>(doc.root(), output, lineBreak, indent, 0);</div> -<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">return</span> output;</div> -<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> }</div> -<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> }</div> -<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> }</div> -<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div> -<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="keyword">inline</span></div> -<div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="namespacezen.html#afaa4920e275078e6c8009fbdf58b57ee"> 287</a></span> std::string <a class="code" href="namespacezen.html#afaa4920e275078e6c8009fbdf58b57ee">serialize</a>(<span class="keyword">const</span> <a class="code" href="classzen_1_1_xml_doc.html">XmlDoc</a>& doc,</div> -<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keyword">const</span> std::string& lineBreak,</div> -<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keyword">const</span> std::string& indent) { <span class="keywordflow">return</span> implementation::serialize(doc, lineBreak, indent); }</div> -<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div> -<div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="comment">/*</span></div> -<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="comment">Grammar for XML parser</span></div> -<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="comment">-------------------------------</span></div> -<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="comment">document-expression:</span></div> -<div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="comment"> <?xml version="1.0" encoding="UTF-8" standalone="yes"?></span></div> -<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="comment"> element-expression:</span></div> -<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="comment"></span></div> -<div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="comment">element-expression:</span></div> -<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="comment"> <string attributes-expression/></span></div> -<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="comment"> <string attributes-expression> pm-expression </string></span></div> -<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="comment"></span></div> -<div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="comment">element-list-expression:</span></div> -<div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="comment"> <empty></span></div> -<div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="comment"> element-expression element-list-expression</span></div> -<div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="comment"></span></div> -<div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="comment">attributes-expression:</span></div> -<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="comment"> <empty></span></div> -<div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="comment"> string="string" attributes-expression</span></div> -<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="comment"></span></div> -<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="comment">pm-expression:</span></div> -<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="comment"> string</span></div> -<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="comment"> element-list-expression</span></div> -<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="comment">*/</span></div> -<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div> -<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="keyword">namespace </span>implementation</div> -<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> {</div> -<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="keyword">struct </span>Token</div> -<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> {</div> -<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keyword">enum</span> Type</div> -<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div> -<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  TK_LESS,</div> -<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  TK_GREATER,</div> -<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  TK_LESS_SLASH,</div> -<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  TK_SLASH_GREATER,</div> -<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  TK_EQUAL,</div> -<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  TK_QUOTE,</div> -<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  TK_DECL_BEGIN,</div> -<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  TK_DECL_END,</div> -<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  TK_NAME,</div> -<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  TK_END</div> -<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  };</div> -<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div> -<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  Token(Type t) : type(t) {}</div> -<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  Token(<span class="keyword">const</span> std::string& txt) : type(TK_NAME), name(txt) {}</div> -<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div> -<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  Type type;</div> -<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  std::string name; <span class="comment">//filled if type == TK_NAME</span></div> -<div class="line"><a name="l00338"></a><span class="lineno"> 338</span> };</div> -<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div> -<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="keyword">class </span>Scanner</div> -<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> {</div> -<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="keyword">public</span>:</div> -<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  Scanner(<span class="keyword">const</span> std::string& stream) :</div> -<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  xmlCommentBegin(<span class="stringliteral">"<!--"</span>),</div> -<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  xmlCommentEnd (<span class="stringliteral">"-->"</span>),</div> -<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  stream_(stream),</div> -<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  pos(stream_.begin())</div> -<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  {</div> -<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">if</span> (zen::startsWith(stream_, BYTE_ORDER_MARK_UTF8))</div> -<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  pos += strLength(BYTE_ORDER_MARK_UTF8);</div> -<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div> -<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  tokens.push_back(std::make_pair(<span class="stringliteral">"<?xml"</span>, Token::TK_DECL_BEGIN));</div> -<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  tokens.push_back(std::make_pair(<span class="stringliteral">"?>"</span>, Token::TK_DECL_END));</div> -<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  tokens.push_back(std::make_pair(<span class="stringliteral">"</"</span>, Token::TK_LESS_SLASH));</div> -<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  tokens.push_back(std::make_pair(<span class="stringliteral">"/>"</span>, Token::TK_SLASH_GREATER));</div> -<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  tokens.push_back(std::make_pair(<span class="stringliteral">"<"</span> , Token::TK_LESS)); <span class="comment">//evaluate after TK_DECL_BEGIN!</span></div> -<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  tokens.push_back(std::make_pair(<span class="stringliteral">">"</span> , Token::TK_GREATER));</div> -<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  tokens.push_back(std::make_pair(<span class="stringliteral">"="</span> , Token::TK_EQUAL));</div> -<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  tokens.push_back(std::make_pair(<span class="stringliteral">"\""</span>, Token::TK_QUOTE));</div> -<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  tokens.push_back(std::make_pair(<span class="stringliteral">"\'"</span>, Token::TK_QUOTE));</div> -<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  }</div> -<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div> -<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  Token nextToken() <span class="comment">//throw XmlParsingError</span></div> -<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  {</div> -<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="comment">//skip whitespace</span></div> -<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  pos = std::find_if(pos, stream_.end(), [](<span class="keywordtype">char</span> c) { <span class="keywordflow">return</span> !zen::isWhiteSpace(c); });</div> -<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div> -<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">if</span> (pos == stream_.end())</div> -<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">return</span> Token::TK_END;</div> -<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div> -<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="comment">//skip XML comments</span></div> -<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">if</span> (startsWith(xmlCommentBegin))</div> -<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  {</div> -<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keyword">auto</span> it = std::search(pos + xmlCommentBegin.size(), stream_.end(), xmlCommentEnd.begin(), xmlCommentEnd.end());</div> -<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">if</span> (it != stream_.end())</div> -<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  {</div> -<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  pos = it + xmlCommentEnd.size();</div> -<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">return</span> nextToken();</div> -<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  }</div> -<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  }</div> -<div class="line"><a name="l00381"></a><span class="lineno"> 381</span> </div> -<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = tokens.begin(); it != tokens.end(); ++it)</div> -<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">if</span> (startsWith(it->first))</div> -<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  {</div> -<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  pos += it->first.size();</div> -<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">return</span> it->second;</div> -<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div> -<div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div> -<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keyword">auto</span> nameEnd = std::find_if(pos, stream_.end(), [](<span class="keywordtype">char</span> c)</div> -<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  {</div> -<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">return</span> c == <span class="charliteral">'<'</span> ||</div> -<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  c == <span class="charliteral">'>'</span> ||</div> -<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  c == <span class="charliteral">'='</span> ||</div> -<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  c == <span class="charliteral">'/'</span> ||</div> -<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  c == <span class="charliteral">'\''</span> ||</div> -<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  c == <span class="charliteral">'\"'</span> ||</div> -<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  zen::isWhiteSpace(c);</div> -<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  });</div> -<div class="line"><a name="l00399"></a><span class="lineno"> 399</span> </div> -<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordflow">if</span> (nameEnd != pos)</div> -<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  {</div> -<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  std::string name(&*pos, nameEnd - pos);</div> -<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  pos = nameEnd;</div> -<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">return</span> implementation::denormalize(name);</div> -<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  }</div> -<div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div> -<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="comment">//unknown token</span></div> -<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">throw</span> XmlParsingError(posRow(), posCol());</div> -<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</div> -<div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div> -<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  std::string extractElementValue()</div> -<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  {</div> -<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keyword">auto</span> it = std::find_if(pos, stream_.end(), [](<span class="keywordtype">char</span> c)</div> -<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  {</div> -<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">return</span> c == <span class="charliteral">'<'</span> ||</div> -<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  c == <span class="charliteral">'>'</span>;</div> -<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  });</div> -<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  std::string output(pos, it);</div> -<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  pos = it;</div> -<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> implementation::denormalize(output);</div> -<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  }</div> -<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div> -<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  std::string extractAttributeValue()</div> -<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  {</div> -<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keyword">auto</span> it = std::find_if(pos, stream_.end(), [](<span class="keywordtype">char</span> c)</div> -<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  {</div> -<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> c == <span class="charliteral">'<'</span> ||</div> -<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  c == <span class="charliteral">'>'</span> ||</div> -<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  c == <span class="charliteral">'\''</span> ||</div> -<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  c == <span class="charliteral">'\"'</span>;</div> -<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  });</div> -<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  std::string output(pos, it);</div> -<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  pos = it;</div> -<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">return</span> implementation::denormalize(output);</div> -<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  }</div> -<div class="line"><a name="l00436"></a><span class="lineno"> 436</span> </div> -<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordtype">size_t</span> posRow() const <span class="comment">//current row beginning with 0</span></div> -<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  {</div> -<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> crSum = std::count(stream_.begin(), pos, <span class="charliteral">'\r'</span>); <span class="comment">//carriage returns</span></div> -<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> nlSum = std::count(stream_.begin(), pos, <span class="charliteral">'\n'</span>); <span class="comment">//new lines</span></div> -<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  assert(crSum == 0 || nlSum == 0 || crSum == nlSum);</div> -<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">return</span> std::max(crSum, nlSum); <span class="comment">//be compatible with Linux/Mac/Win</span></div> -<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  }</div> -<div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div> -<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordtype">size_t</span> posCol() const <span class="comment">//current col beginning with 0</span></div> -<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  {</div> -<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="comment">//seek beginning of line</span></div> -<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = pos; it != stream_.begin(); )</div> -<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  {</div> -<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  --it;</div> -<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">if</span> (*it == <span class="charliteral">'\r'</span> || *it == <span class="charliteral">'\n'</span>)</div> -<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">return</span> pos - it - 1;</div> -<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  }</div> -<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">return</span> pos - stream_.begin();</div> -<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  }</div> -<div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div> -<div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="keyword">private</span>:</div> -<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  Scanner(<span class="keyword">const</span> Scanner&);</div> -<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  Scanner& operator=(<span class="keyword">const</span> Scanner&);</div> -<div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div> -<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordtype">bool</span> startsWith(<span class="keyword">const</span> std::string& prefix)<span class="keyword"> const</span></div> -<div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="keyword"> </span>{</div> -<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">if</span> (stream_.end() - pos < static_cast<ptrdiff_t>(prefix.size()))</div> -<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> -<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">return</span> std::equal(prefix.begin(), prefix.end(), pos);</div> -<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  }</div> -<div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div> -<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keyword">typedef</span> std::vector<std::pair<std::string, Token::Type> > TokenList;</div> -<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  TokenList tokens;</div> -<div class="line"><a name="l00470"></a><span class="lineno"> 470</span> </div> -<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keyword">const</span> std::string xmlCommentBegin;</div> -<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keyword">const</span> std::string xmlCommentEnd;</div> -<div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div> -<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keyword">const</span> std::string stream_;</div> -<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  std::string::const_iterator pos;</div> -<div class="line"><a name="l00476"></a><span class="lineno"> 476</span> };</div> -<div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div> -<div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div> -<div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="keyword">class </span>XmlParser</div> -<div class="line"><a name="l00480"></a><span class="lineno"> 480</span> {</div> -<div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="keyword">public</span>:</div> -<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  XmlParser(<span class="keyword">const</span> std::string& stream) :</div> -<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  scn(stream),</div> -<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  tk(scn.nextToken()) {}</div> -<div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div> -<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  XmlDoc <a class="code" href="namespacezen.html#a1ae1a4688d724b554fe3bf4638700477">parse</a>() <span class="comment">//throw XmlParsingError</span></div> -<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  {</div> -<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  XmlDoc doc;</div> -<div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div> -<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="comment">//declaration (optional)</span></div> -<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">if</span> (token().type == Token::TK_DECL_BEGIN)</div> -<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  {</div> -<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  nextToken();</div> -<div class="line"><a name="l00494"></a><span class="lineno"> 494</span> </div> -<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">while</span> (token().type == Token::TK_NAME)</div> -<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  {</div> -<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  std::string attribName = token().name;</div> -<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  nextToken();</div> -<div class="line"><a name="l00499"></a><span class="lineno"> 499</span> </div> -<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  consumeToken(Token::TK_EQUAL);</div> -<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  expectToken(Token::TK_QUOTE);</div> -<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  std::string attribValue = scn.extractAttributeValue();</div> -<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  nextToken();</div> -<div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div> -<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  consumeToken(Token::TK_QUOTE);</div> -<div class="line"><a name="l00506"></a><span class="lineno"> 506</span> </div> -<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">if</span> (attribName == <span class="stringliteral">"version"</span>)</div> -<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  doc.setVersion(attribValue);</div> -<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (attribName == <span class="stringliteral">"encoding"</span>)</div> -<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  doc.setEncoding(attribValue);</div> -<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (attribName == <span class="stringliteral">"standalone"</span>)</div> -<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  doc.setStandalone(attribValue);</div> -<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  }</div> -<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  consumeToken(Token::TK_DECL_END);</div> -<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  }</div> -<div class="line"><a name="l00516"></a><span class="lineno"> 516</span> </div> -<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  XmlDoc dummy;</div> -<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  XmlElement& elemTmp = dummy.root();</div> -<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  parseChildElements(elemTmp);</div> -<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div> -<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keyword">auto</span> iterPair = elemTmp.getChildren();</div> -<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">if</span> (iterPair.first != iterPair.second)</div> -<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  doc.root().swap(*iterPair.first);</div> -<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> </div> -<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  expectToken(Token::TK_END);</div> -<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">return</span> doc;</div> -<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  };</div> -<div class="line"><a name="l00528"></a><span class="lineno"> 528</span> </div> -<div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="keyword">private</span>:</div> -<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  XmlParser(<span class="keyword">const</span> XmlParser&);</div> -<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  XmlParser& operator=(<span class="keyword">const</span> XmlParser&);</div> -<div class="line"><a name="l00532"></a><span class="lineno"> 532</span> </div> -<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordtype">void</span> parseChildElements(XmlElement& parent)</div> -<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  {</div> -<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordflow">while</span> (token().type == Token::TK_LESS)</div> -<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  {</div> -<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  nextToken();</div> -<div class="line"><a name="l00538"></a><span class="lineno"> 538</span> </div> -<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  expectToken(Token::TK_NAME);</div> -<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  std::string elementName = token().name;</div> -<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  nextToken();</div> -<div class="line"><a name="l00542"></a><span class="lineno"> 542</span> </div> -<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  XmlElement& newElement = parent.addChild(elementName);</div> -<div class="line"><a name="l00544"></a><span class="lineno"> 544</span> </div> -<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  parseAttributes(newElement);</div> -<div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div> -<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keywordflow">if</span> (token().type == Token::TK_SLASH_GREATER) <span class="comment">//empty element</span></div> -<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  {</div> -<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  nextToken();</div> -<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">continue</span>;</div> -<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  }</div> -<div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div> -<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  expectToken(Token::TK_GREATER);</div> -<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  std::string elementValue = scn.extractElementValue();</div> -<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  nextToken();</div> -<div class="line"><a name="l00556"></a><span class="lineno"> 556</span> </div> -<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="comment">//no support for mixed-mode content</span></div> -<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordflow">if</span> (token().type == Token::TK_LESS) <span class="comment">//structured element</span></div> -<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  parseChildElements(newElement);</div> -<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">else</span> <span class="comment">//value element</span></div> -<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  newElement.setValue(elementValue);</div> -<div class="line"><a name="l00562"></a><span class="lineno"> 562</span> </div> -<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  consumeToken(Token::TK_LESS_SLASH);</div> -<div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div> -<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keywordflow">if</span> (token().type != Token::TK_NAME ||</div> -<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  elementName != token().name)</div> -<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">throw</span> XmlParsingError(scn.posRow(), scn.posCol());</div> -<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  nextToken();</div> -<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div> -<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  consumeToken(Token::TK_GREATER);</div> -<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  }</div> -<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  };</div> -<div class="line"><a name="l00573"></a><span class="lineno"> 573</span> </div> -<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordtype">void</span> parseAttributes(XmlElement& element)</div> -<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  {</div> -<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">while</span> (token().type == Token::TK_NAME)</div> -<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  {</div> -<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  std::string attribName = token().name;</div> -<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  nextToken();</div> -<div class="line"><a name="l00580"></a><span class="lineno"> 580</span> </div> -<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  consumeToken(Token::TK_EQUAL);</div> -<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  expectToken(Token::TK_QUOTE);</div> -<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  std::string attribValue = scn.extractAttributeValue();</div> -<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  nextToken();</div> -<div class="line"><a name="l00585"></a><span class="lineno"> 585</span> </div> -<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  consumeToken(Token::TK_QUOTE);</div> -<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  element.setAttribute(attribName, attribValue);</div> -<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  }</div> -<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  }</div> -<div class="line"><a name="l00590"></a><span class="lineno"> 590</span> </div> -<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keyword">const</span> Token& token()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> tk; }</div> -<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordtype">void</span> nextToken() { tk = scn.nextToken(); }</div> -<div class="line"><a name="l00593"></a><span class="lineno"> 593</span> </div> -<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordtype">void</span> consumeToken(Token::Type t) <span class="comment">//throw XmlParsingError</span></div> -<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  {</div> -<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  expectToken(t); <span class="comment">//throw XmlParsingError</span></div> -<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  nextToken();</div> -<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  }</div> -<div class="line"><a name="l00599"></a><span class="lineno"> 599</span> </div> -<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordtype">void</span> expectToken(Token::Type t) <span class="comment">//throw XmlParsingError</span></div> -<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  {</div> -<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordflow">if</span> (token().type != t)</div> -<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">throw</span> XmlParsingError(scn.posRow(), scn.posCol());</div> -<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  }</div> -<div class="line"><a name="l00605"></a><span class="lineno"> 605</span> </div> -<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  Scanner scn;</div> -<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  Token tk;</div> -<div class="line"><a name="l00608"></a><span class="lineno"> 608</span> };</div> -<div class="line"><a name="l00609"></a><span class="lineno"> 609</span> }</div> -<div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div> -<div class="line"><a name="l00611"></a><span class="lineno"> 611</span> <span class="keyword">inline</span></div> -<div class="line"><a name="l00612"></a><span class="lineno"><a class="line" href="namespacezen.html#a1ae1a4688d724b554fe3bf4638700477"> 612</a></span> <a class="code" href="classzen_1_1_xml_doc.html">XmlDoc</a> <a class="code" href="namespacezen.html#a1ae1a4688d724b554fe3bf4638700477">parse</a>(<span class="keyword">const</span> std::string& stream) <span class="comment">//throw XmlParsingError</span></div> -<div class="line"><a name="l00613"></a><span class="lineno"> 613</span> {</div> -<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keywordflow">return</span> implementation::XmlParser(stream).parse(); <span class="comment">//throw XmlParsingError</span></div> -<div class="line"><a name="l00615"></a><span class="lineno"> 615</span> }</div> -<div class="line"><a name="l00616"></a><span class="lineno"> 616</span> }</div> -<div class="line"><a name="l00617"></a><span class="lineno"> 617</span> </div> -<div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <span class="preprocessor">#endif //ZEN_XML_PARSER_HEADER_81248670213764583021432</span></div> -<div class="ttc" id="namespacezen_html_a1ae1a4688d724b554fe3bf4638700477"><div class="ttname"><a href="namespacezen.html#a1ae1a4688d724b554fe3bf4638700477">zen::parse</a></div><div class="ttdeci">XmlDoc parse(const std::string &stream)</div><div class="ttdoc">Load XML document from a byte stream. </div><div class="ttdef"><b>Definition:</b> parser.h:612</div></div> -<div class="ttc" id="namespacezen_html_afaa4920e275078e6c8009fbdf58b57ee"><div class="ttname"><a href="namespacezen.html#afaa4920e275078e6c8009fbdf58b57ee">zen::serialize</a></div><div class="ttdeci">std::string serialize(const XmlDoc &doc, const std::string &lineBreak="\r\n", const std::string &indent=" ")</div><div class="ttdoc">Save XML document as a byte stream. </div><div class="ttdef"><b>Definition:</b> parser.h:287</div></div> -<div class="ttc" id="structzen_1_1_xml_parsing_error_html_a3ed4cd1b5599df9b52500f620421496e"><div class="ttname"><a href="structzen_1_1_xml_parsing_error.html#a3ed4cd1b5599df9b52500f620421496e">zen::XmlParsingError::row</a></div><div class="ttdeci">size_t row</div><div class="ttdoc">Input file row where the parsing error occured (zero-based) </div><div class="ttdef"><b>Definition:</b> parser.h:39</div></div> -<div class="ttc" id="classzen_1_1_xml_doc_html"><div class="ttname"><a href="classzen_1_1_xml_doc.html">zen::XmlDoc</a></div><div class="ttdoc">The complete XML document. </div><div class="ttdef"><b>Definition:</b> dom.h:249</div></div> -<div class="ttc" id="structzen_1_1_xml_parsing_error_html_a4a37dc48883337499804a9dc791669fd"><div class="ttname"><a href="structzen_1_1_xml_parsing_error.html#a4a37dc48883337499804a9dc791669fd">zen::XmlParsingError::col</a></div><div class="ttdeci">size_t col</div><div class="ttdoc">Input file column where the parsing error occured (zero-based) </div><div class="ttdef"><b>Definition:</b> parser.h:41</div></div> -<div class="ttc" id="structzen_1_1_xml_parsing_error_html"><div class="ttname"><a href="structzen_1_1_xml_parsing_error.html">zen::XmlParsingError</a></div><div class="ttdoc">Exception thrown due to an XML parsing error. </div><div class="ttdef"><b>Definition:</b> parser.h:35</div></div> -<div class="ttc" id="structzen_1_1_xml_error_html"><div class="ttname"><a href="structzen_1_1_xml_error.html">zen::XmlError</a></div><div class="ttdoc">Exception base class for zen::Xml. </div><div class="ttdef"><b>Definition:</b> error.h:13</div></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/search/close.png b/zenxml/doc/search/close.png Binary files differdeleted file mode 100644 index 9342d3df..00000000 --- a/zenxml/doc/search/close.png +++ /dev/null diff --git a/zenxml/doc/search/mag_sel.png b/zenxml/doc/search/mag_sel.png Binary files differdeleted file mode 100644 index 81f6040a..00000000 --- a/zenxml/doc/search/mag_sel.png +++ /dev/null diff --git a/zenxml/doc/search/nomatches.html b/zenxml/doc/search/nomatches.html deleted file mode 100644 index b1ded27e..00000000 --- a/zenxml/doc/search/nomatches.html +++ /dev/null @@ -1,12 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html><head><title></title> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<link rel="stylesheet" type="text/css" href="search.css"/> -<script type="text/javascript" src="search.js"></script> -</head> -<body class="SRPage"> -<div id="SRIndex"> -<div class="SRStatus" id="NoMatches">No Matches</div> -</div> -</body> -</html> diff --git a/zenxml/doc/search/search.css b/zenxml/doc/search/search.css deleted file mode 100644 index 4d7612ff..00000000 --- a/zenxml/doc/search/search.css +++ /dev/null @@ -1,271 +0,0 @@ -/*---------------- Search Box */ - -#FSearchBox { - float: left; -} - -#MSearchBox { - white-space : nowrap; - position: absolute; - float: none; - display: inline; - margin-top: 8px; - right: 0px; - width: 170px; - z-index: 102; - background-color: white; -} - -#MSearchBox .left -{ - display:block; - position:absolute; - left:10px; - width:20px; - height:19px; - background:url('search_l.png') no-repeat; - background-position:right; -} - -#MSearchSelect { - display:block; - position:absolute; - width:20px; - height:19px; -} - -.left #MSearchSelect { - left:4px; -} - -.right #MSearchSelect { - right:5px; -} - -#MSearchField { - display:block; - position:absolute; - height:19px; - background:url('search_m.png') repeat-x; - border:none; - width:111px; - margin-left:20px; - padding-left:4px; - color: #909090; - outline: none; - font: 9pt Arial, Verdana, sans-serif; -} - -#FSearchBox #MSearchField { - margin-left:15px; -} - -#MSearchBox .right { - display:block; - position:absolute; - right:10px; - top:0px; - width:20px; - height:19px; - background:url('search_r.png') no-repeat; - background-position:left; -} - -#MSearchClose { - display: none; - position: absolute; - top: 4px; - background : none; - border: none; - margin: 0px 4px 0px 0px; - padding: 0px 0px; - outline: none; -} - -.left #MSearchClose { - left: 6px; -} - -.right #MSearchClose { - right: 2px; -} - -.MSearchBoxActive #MSearchField { - color: #000000; -} - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; - z-index: 1; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt Arial, Verdana, sans-serif; - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: monospace; - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: #000000; - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: #000000; - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - width: 60ex; - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; - padding-bottom: 15px; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -body.SRPage { - margin: 5px 2px; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; -} - -.SRResult { - display: none; -} - -DIV.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.searchresult { - background-color: #F0F3F8; -} - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/zenxml/doc/search/search.js b/zenxml/doc/search/search.js deleted file mode 100644 index 281d08b7..00000000 --- a/zenxml/doc/search/search.js +++ /dev/null @@ -1,803 +0,0 @@ -// Search script generated by doxygen -// Copyright (C) 2009 by Dimitri van Heesch. - -// The code in this file is loosly based on main.js, part of Natural Docs, -// which is Copyright (C) 2003-2008 Greg Valure -// Natural Docs is licensed under the GPL. - -var indexSectionsWithContent = -{ - 0: "aceglnoprswxz", - 1: "x", - 2: "z", - 3: "aeglnoprswx", - 4: "clr", - 5: "o" -}; - -var indexSectionNames = -{ - 0: "all", - 1: "classes", - 2: "namespaces", - 3: "functions", - 4: "variables", - 5: "pages" -}; - -function convertToId(search) -{ - var result = ''; - for (i=0;i<search.length;i++) - { - var c = search.charAt(i); - var cn = c.charCodeAt(0); - if (c.match(/[a-z0-9\u0080-\uFFFF]/)) - { - result+=c; - } - else if (cn<16) - { - result+="_0"+cn.toString(16); - } - else - { - result+="_"+cn.toString(16); - } - } - return result; -} - -function getXPos(item) -{ - var x = 0; - if (item.offsetWidth) - { - while (item && item!=document.body) - { - x += item.offsetLeft; - item = item.offsetParent; - } - } - return x; -} - -function getYPos(item) -{ - var y = 0; - if (item.offsetWidth) - { - while (item && item!=document.body) - { - y += item.offsetTop; - item = item.offsetParent; - } - } - return y; -} - -/* A class handling everything associated with the search panel. - - Parameters: - name - The name of the global variable that will be - storing this instance. Is needed to be able to set timeouts. - resultPath - path to use for external files -*/ -function SearchBox(name, resultsPath, inFrame, label) -{ - if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } - - // ---------- Instance variables - this.name = name; - this.resultsPath = resultsPath; - this.keyTimeout = 0; - this.keyTimeoutLength = 500; - this.closeSelectionTimeout = 300; - this.lastSearchValue = ""; - this.lastResultsPage = ""; - this.hideTimeout = 0; - this.searchIndex = 0; - this.searchActive = false; - this.insideFrame = inFrame; - this.searchLabel = label; - - // ----------- DOM Elements - - this.DOMSearchField = function() - { return document.getElementById("MSearchField"); } - - this.DOMSearchSelect = function() - { return document.getElementById("MSearchSelect"); } - - this.DOMSearchSelectWindow = function() - { return document.getElementById("MSearchSelectWindow"); } - - this.DOMPopupSearchResults = function() - { return document.getElementById("MSearchResults"); } - - this.DOMPopupSearchResultsWindow = function() - { return document.getElementById("MSearchResultsWindow"); } - - this.DOMSearchClose = function() - { return document.getElementById("MSearchClose"); } - - this.DOMSearchBox = function() - { return document.getElementById("MSearchBox"); } - - // ------------ Event Handlers - - // Called when focus is added or removed from the search field. - this.OnSearchFieldFocus = function(isActive) - { - this.Activate(isActive); - } - - this.OnSearchSelectShow = function() - { - var searchSelectWindow = this.DOMSearchSelectWindow(); - var searchField = this.DOMSearchSelect(); - - if (this.insideFrame) - { - var left = getXPos(searchField); - var top = getYPos(searchField); - left += searchField.offsetWidth + 6; - top += searchField.offsetHeight; - - // show search selection popup - searchSelectWindow.style.display='block'; - left -= searchSelectWindow.offsetWidth; - searchSelectWindow.style.left = left + 'px'; - searchSelectWindow.style.top = top + 'px'; - } - else - { - var left = getXPos(searchField); - var top = getYPos(searchField); - top += searchField.offsetHeight; - - // show search selection popup - searchSelectWindow.style.display='block'; - searchSelectWindow.style.left = left + 'px'; - searchSelectWindow.style.top = top + 'px'; - } - - // stop selection hide timer - if (this.hideTimeout) - { - clearTimeout(this.hideTimeout); - this.hideTimeout=0; - } - return false; // to avoid "image drag" default event - } - - this.OnSearchSelectHide = function() - { - this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()", - this.closeSelectionTimeout); - } - - // Called when the content of the search field is changed. - this.OnSearchFieldChange = function(evt) - { - if (this.keyTimeout) // kill running timer - { - clearTimeout(this.keyTimeout); - this.keyTimeout = 0; - } - - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 || e.keyCode==13) - { - if (e.shiftKey==1) - { - this.OnSearchSelectShow(); - var win=this.DOMSearchSelectWindow(); - for (i=0;i<win.childNodes.length;i++) - { - var child = win.childNodes[i]; // get span within a - if (child.className=='SelectItem') - { - child.focus(); - return; - } - } - return; - } - else if (window.frames.MSearchResults.searchResults) - { - var elem = window.frames.MSearchResults.searchResults.NavNext(0); - if (elem) elem.focus(); - } - } - else if (e.keyCode==27) // Escape out of the search field - { - this.DOMSearchField().blur(); - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.lastSearchValue = ''; - this.Activate(false); - return; - } - - // strip whitespaces - var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); - - if (searchValue != this.lastSearchValue) // search value has changed - { - if (searchValue != "") // non-empty search - { - // set timer for search update - this.keyTimeout = setTimeout(this.name + '.Search()', - this.keyTimeoutLength); - } - else // empty search field - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.lastSearchValue = ''; - } - } - } - - this.SelectItemCount = function(id) - { - var count=0; - var win=this.DOMSearchSelectWindow(); - for (i=0;i<win.childNodes.length;i++) - { - var child = win.childNodes[i]; // get span within a - if (child.className=='SelectItem') - { - count++; - } - } - return count; - } - - this.SelectItemSet = function(id) - { - var i,j=0; - var win=this.DOMSearchSelectWindow(); - for (i=0;i<win.childNodes.length;i++) - { - var child = win.childNodes[i]; // get span within a - if (child.className=='SelectItem') - { - var node = child.firstChild; - if (j==id) - { - node.innerHTML='•'; - } - else - { - node.innerHTML=' '; - } - j++; - } - } - } - - // Called when an search filter selection is made. - // set item with index id as the active item - this.OnSelectItem = function(id) - { - this.searchIndex = id; - this.SelectItemSet(id); - var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); - if (searchValue!="" && this.searchActive) // something was found -> do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down - { - this.searchIndex++; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==38 && this.searchIndex>0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches.html'; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of <Search()>. - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName == 'DIV' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName == 'DIV' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; e<searchData.length; e++) - { - var id = searchData[e][0]; - var srResult = document.createElement('div'); - srResult.setAttribute('id','SR_'+id); - setClassAttr(srResult,'SRResult'); - var srEntry = document.createElement('div'); - setClassAttr(srEntry,'SREntry'); - var srLink = document.createElement('a'); - srLink.setAttribute('id','Item'+e); - setKeyActions(srLink,'return searchResults.Nav(event,'+e+')'); - setClassAttr(srLink,'SRSymbol'); - srLink.innerHTML = searchData[e][1][0]; - srEntry.appendChild(srLink); - if (searchData[e][1].length==2) // single result - { - srLink.setAttribute('href',searchData[e][1][1][0]); - if (searchData[e][1][1][1]) - { - srLink.setAttribute('target','_parent'); - } - var srScope = document.createElement('span'); - setClassAttr(srScope,'SRScope'); - srScope.innerHTML = searchData[e][1][1][2]; - srEntry.appendChild(srScope); - } - else // multiple results - { - srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); - var srChildren = document.createElement('div'); - setClassAttr(srChildren,'SRChildren'); - for (var c=0; c<searchData[e][1].length-1; c++) - { - var srChild = document.createElement('a'); - srChild.setAttribute('id','Item'+e+'_c'+c); - setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')'); - setClassAttr(srChild,'SRScope'); - srChild.setAttribute('href',searchData[e][1][c+1][0]); - if (searchData[e][1][c+1][1]) - { - srChild.setAttribute('target','_parent'); - } - srChild.innerHTML = searchData[e][1][c+1][2]; - srChildren.appendChild(srChild); - } - srEntry.appendChild(srChildren); - } - srResult.appendChild(srEntry); - results.appendChild(srResult); - } -} - diff --git a/zenxml/doc/search/search_l.png b/zenxml/doc/search/search_l.png Binary files differdeleted file mode 100644 index c872f4da..00000000 --- a/zenxml/doc/search/search_l.png +++ /dev/null diff --git a/zenxml/doc/search/search_m.png b/zenxml/doc/search/search_m.png Binary files differdeleted file mode 100644 index b429a16b..00000000 --- a/zenxml/doc/search/search_m.png +++ /dev/null diff --git a/zenxml/doc/search/search_r.png b/zenxml/doc/search/search_r.png Binary files differdeleted file mode 100644 index 97ee8b43..00000000 --- a/zenxml/doc/search/search_r.png +++ /dev/null diff --git a/zenxml/doc/structzen_1_1_xml_error-members.html b/zenxml/doc/structzen_1_1_xml_error-members.html deleted file mode 100644 index d71a4ab6..00000000 --- a/zenxml/doc/structzen_1_1_xml_error-members.html +++ /dev/null @@ -1,105 +0,0 @@ -<!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>zen::Xml: Member List</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="namespacezen.html">zen</a></li><li class="navelem"><a class="el" href="structzen_1_1_xml_error.html">XmlError</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">zen::XmlError Member List</div> </div> -</div><!--header--> -<div class="contents"> - -<p>This is the complete list of members for <a class="el" href="structzen_1_1_xml_error.html">zen::XmlError</a>, including all inherited members.</p> -<table class="directory"> -</table></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/structzen_1_1_xml_error.html b/zenxml/doc/structzen_1_1_xml_error.html deleted file mode 100644 index 6660274e..00000000 --- a/zenxml/doc/structzen_1_1_xml_error.html +++ /dev/null @@ -1,121 +0,0 @@ -<!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>zen::Xml: zen::XmlError Struct Reference</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="namespacezen.html">zen</a></li><li class="navelem"><a class="el" href="structzen_1_1_xml_error.html">XmlError</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="structzen_1_1_xml_error-members.html">List of all members</a> </div> - <div class="headertitle"> -<div class="title">zen::XmlError Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Exception base class for zen::Xml. - <a href="structzen_1_1_xml_error.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="error_8h_source.html">error.h</a>></code></p> -<div class="dynheader"> -Inheritance diagram for zen::XmlError:</div> -<div class="dyncontent"> - <div class="center"> - <img src="structzen_1_1_xml_error.png" usemap="#zen::XmlError_map" alt=""/> - <map id="zen::XmlError_map" name="zen::XmlError_map"> -<area href="structzen_1_1_xml_file_error.html" title="Exception thrown due to failed file I/O. " alt="zen::XmlFileError" shape="rect" coords="0,56,132,80"/> -<area href="structzen_1_1_xml_parsing_error.html" title="Exception thrown due to an XML parsing error. " alt="zen::XmlParsingError" shape="rect" coords="142,56,274,80"/> -</map> - </div></div> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Exception base class for zen::Xml. </p> -</div></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/structzen_1_1_xml_error.png b/zenxml/doc/structzen_1_1_xml_error.png Binary files differdeleted file mode 100644 index f1a74bd5..00000000 --- a/zenxml/doc/structzen_1_1_xml_error.png +++ /dev/null diff --git a/zenxml/doc/structzen_1_1_xml_file_error-members.html b/zenxml/doc/structzen_1_1_xml_file_error-members.html deleted file mode 100644 index 1a545d6b..00000000 --- a/zenxml/doc/structzen_1_1_xml_file_error-members.html +++ /dev/null @@ -1,106 +0,0 @@ -<!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>zen::Xml: Member List</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="namespacezen.html">zen</a></li><li class="navelem"><a class="el" href="structzen_1_1_xml_file_error.html">XmlFileError</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">zen::XmlFileError Member List</div> </div> -</div><!--header--> -<div class="contents"> - -<p>This is the complete list of members for <a class="el" href="structzen_1_1_xml_file_error.html">zen::XmlFileError</a>, including all inherited members.</p> -<table class="directory"> - <tr class="even"><td class="entry"><a class="el" href="structzen_1_1_xml_file_error.html#a4a109e749675a3887af8cfc140303b8f">lastError</a></td><td class="entry"><a class="el" href="structzen_1_1_xml_file_error.html">zen::XmlFileError</a></td><td class="entry"></td></tr> -</table></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/structzen_1_1_xml_file_error.html b/zenxml/doc/structzen_1_1_xml_file_error.html deleted file mode 100644 index 4a546151..00000000 --- a/zenxml/doc/structzen_1_1_xml_file_error.html +++ /dev/null @@ -1,129 +0,0 @@ -<!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>zen::Xml: zen::XmlFileError Struct Reference</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="namespacezen.html">zen</a></li><li class="navelem"><a class="el" href="structzen_1_1_xml_file_error.html">XmlFileError</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Public Attributes</a> | -<a href="structzen_1_1_xml_file_error-members.html">List of all members</a> </div> - <div class="headertitle"> -<div class="title">zen::XmlFileError Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Exception thrown due to failed file I/O. - <a href="structzen_1_1_xml_file_error.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="io_8h_source.html">io.h</a>></code></p> -<div class="dynheader"> -Inheritance diagram for zen::XmlFileError:</div> -<div class="dyncontent"> - <div class="center"> - <img src="structzen_1_1_xml_file_error.png" usemap="#zen::XmlFileError_map" alt=""/> - <map id="zen::XmlFileError_map" name="zen::XmlFileError_map"> -<area href="structzen_1_1_xml_error.html" title="Exception base class for zen::Xml. " alt="zen::XmlError" shape="rect" coords="0,0,110,24"/> -</map> - </div></div> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Public Attributes</h2></td></tr> -<tr class="memitem:a4a109e749675a3887af8cfc140303b8f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a109e749675a3887af8cfc140303b8f"></a> -ErrorCode </td><td class="memItemRight" valign="bottom"><a class="el" href="structzen_1_1_xml_file_error.html#a4a109e749675a3887af8cfc140303b8f">lastError</a></td></tr> -<tr class="memdesc:a4a109e749675a3887af8cfc140303b8f"><td class="mdescLeft"> </td><td class="mdescRight">Native error code: errno. <br/></td></tr> -<tr class="separator:a4a109e749675a3887af8cfc140303b8f"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Exception thrown due to failed file I/O. </p> -</div></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/structzen_1_1_xml_file_error.png b/zenxml/doc/structzen_1_1_xml_file_error.png Binary files differdeleted file mode 100644 index dc28e3bf..00000000 --- a/zenxml/doc/structzen_1_1_xml_file_error.png +++ /dev/null diff --git a/zenxml/doc/structzen_1_1_xml_parsing_error-members.html b/zenxml/doc/structzen_1_1_xml_parsing_error-members.html deleted file mode 100644 index 570b20f6..00000000 --- a/zenxml/doc/structzen_1_1_xml_parsing_error-members.html +++ /dev/null @@ -1,107 +0,0 @@ -<!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>zen::Xml: Member List</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="namespacezen.html">zen</a></li><li class="navelem"><a class="el" href="structzen_1_1_xml_parsing_error.html">XmlParsingError</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">zen::XmlParsingError Member List</div> </div> -</div><!--header--> -<div class="contents"> - -<p>This is the complete list of members for <a class="el" href="structzen_1_1_xml_parsing_error.html">zen::XmlParsingError</a>, including all inherited members.</p> -<table class="directory"> - <tr class="even"><td class="entry"><a class="el" href="structzen_1_1_xml_parsing_error.html#a4a37dc48883337499804a9dc791669fd">col</a></td><td class="entry"><a class="el" href="structzen_1_1_xml_parsing_error.html">zen::XmlParsingError</a></td><td class="entry"></td></tr> - <tr><td class="entry"><a class="el" href="structzen_1_1_xml_parsing_error.html#a3ed4cd1b5599df9b52500f620421496e">row</a></td><td class="entry"><a class="el" href="structzen_1_1_xml_parsing_error.html">zen::XmlParsingError</a></td><td class="entry"></td></tr> -</table></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/structzen_1_1_xml_parsing_error.html b/zenxml/doc/structzen_1_1_xml_parsing_error.html deleted file mode 100644 index a41efc36..00000000 --- a/zenxml/doc/structzen_1_1_xml_parsing_error.html +++ /dev/null @@ -1,133 +0,0 @@ -<!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>zen::Xml: zen::XmlParsingError Struct Reference</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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li class="current"><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="annotated.html"><span>Class List</span></a></li> - <li><a href="classes.html"><span>Class Index</span></a></li> - <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> - <li><a href="functions.html"><span>Class Members</span></a></li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="namespacezen.html">zen</a></li><li class="navelem"><a class="el" href="structzen_1_1_xml_parsing_error.html">XmlParsingError</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#pub-attribs">Public Attributes</a> | -<a href="structzen_1_1_xml_parsing_error-members.html">List of all members</a> </div> - <div class="headertitle"> -<div class="title">zen::XmlParsingError Struct Reference</div> </div> -</div><!--header--> -<div class="contents"> - -<p>Exception thrown due to an XML parsing error. - <a href="structzen_1_1_xml_parsing_error.html#details">More...</a></p> - -<p><code>#include <<a class="el" href="parser_8h_source.html">parser.h</a>></code></p> -<div class="dynheader"> -Inheritance diagram for zen::XmlParsingError:</div> -<div class="dyncontent"> - <div class="center"> - <img src="structzen_1_1_xml_parsing_error.png" usemap="#zen::XmlParsingError_map" alt=""/> - <map id="zen::XmlParsingError_map" name="zen::XmlParsingError_map"> -<area href="structzen_1_1_xml_error.html" title="Exception base class for zen::Xml. " alt="zen::XmlError" shape="rect" coords="0,0,132,24"/> -</map> - </div></div> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> -Public Attributes</h2></td></tr> -<tr class="memitem:a3ed4cd1b5599df9b52500f620421496e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3ed4cd1b5599df9b52500f620421496e"></a> -size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structzen_1_1_xml_parsing_error.html#a3ed4cd1b5599df9b52500f620421496e">row</a></td></tr> -<tr class="memdesc:a3ed4cd1b5599df9b52500f620421496e"><td class="mdescLeft"> </td><td class="mdescRight">Input file row where the parsing error occured (zero-based) <br/></td></tr> -<tr class="separator:a3ed4cd1b5599df9b52500f620421496e"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4a37dc48883337499804a9dc791669fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a37dc48883337499804a9dc791669fd"></a> -size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structzen_1_1_xml_parsing_error.html#a4a37dc48883337499804a9dc791669fd">col</a></td></tr> -<tr class="memdesc:a4a37dc48883337499804a9dc791669fd"><td class="mdescLeft"> </td><td class="mdescRight">Input file column where the parsing error occured (zero-based) <br/></td></tr> -<tr class="separator:a4a37dc48883337499804a9dc791669fd"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Exception thrown due to an XML parsing error. </p> -</div></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/doc/structzen_1_1_xml_parsing_error.png b/zenxml/doc/structzen_1_1_xml_parsing_error.png Binary files differdeleted file mode 100644 index fc7e6dfa..00000000 --- a/zenxml/doc/structzen_1_1_xml_parsing_error.png +++ /dev/null diff --git a/zenxml/doc/tab_a.png b/zenxml/doc/tab_a.png Binary files differdeleted file mode 100644 index 3b725c41..00000000 --- a/zenxml/doc/tab_a.png +++ /dev/null diff --git a/zenxml/doc/tab_b.png b/zenxml/doc/tab_b.png Binary files differdeleted file mode 100644 index e2b4a863..00000000 --- a/zenxml/doc/tab_b.png +++ /dev/null diff --git a/zenxml/doc/tab_h.png b/zenxml/doc/tab_h.png Binary files differdeleted file mode 100644 index fd5cb705..00000000 --- a/zenxml/doc/tab_h.png +++ /dev/null diff --git a/zenxml/doc/tab_s.png b/zenxml/doc/tab_s.png Binary files differdeleted file mode 100644 index ab478c95..00000000 --- a/zenxml/doc/tab_s.png +++ /dev/null diff --git a/zenxml/doc/tabs.css b/zenxml/doc/tabs.css deleted file mode 100644 index 9cf578f2..00000000 --- a/zenxml/doc/tabs.css +++ /dev/null @@ -1,60 +0,0 @@ -.tabs, .tabs2, .tabs3 { - background-image: url('tab_b.png'); - width: 100%; - z-index: 101; - font-size: 13px; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; -} - -.tabs2 { - font-size: 10px; -} -.tabs3 { - font-size: 9px; -} - -.tablist { - margin: 0; - padding: 0; - display: table; -} - -.tablist li { - float: left; - display: table-cell; - background-image: url('tab_b.png'); - line-height: 36px; - list-style: none; -} - -.tablist a { - display: block; - padding: 0 20px; - font-weight: bold; - background-image:url('tab_s.png'); - background-repeat:no-repeat; - background-position:right; - color: #283A5D; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; - outline: none; -} - -.tabs3 .tablist a { - padding: 0 10px; -} - -.tablist a:hover { - background-image: url('tab_h.png'); - background-repeat:repeat-x; - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); - text-decoration: none; -} - -.tablist li.current a { - background-image: url('tab_a.png'); - background-repeat:repeat-x; - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); -} diff --git a/zenxml/doc/xml_8h_source.html b/zenxml/doc/xml_8h_source.html deleted file mode 100644 index 74d4da9f..00000000 --- a/zenxml/doc/xml_8h_source.html +++ /dev/null @@ -1,108 +0,0 @@ -<!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>zen::Xml: xml.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="search/search.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="search/search.js"></script> -<script type="text/javascript"> - $(document).ready(function() { searchBox.OnSelectItem(0); }); -</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 id="projectlogo"><img alt="Logo" src="zenXml.png"/></td> - <td style="padding-left: 0.5em;"> - <div id="projectname">zen::Xml - </div> - <div id="projectbrief">Simple C++ XML Processing</div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.6 --> -<script type="text/javascript"> -var searchBox = new SearchBox("searchBox", "search",false,'Search'); -</script> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="namespaces.html"><span>Namespaces</span></a></li> - <li><a href="annotated.html"><span>Classes</span></a></li> - <li> - <div id="MSearchBox" class="MSearchBoxInactive"> - <span class="left"> - <img id="MSearchSelect" src="search/mag_sel.png" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - alt=""/> - <input type="text" id="MSearchField" value="Search" accesskey="S" - onfocus="searchBox.OnSearchFieldFocus(true)" - onblur="searchBox.OnSearchFieldFocus(false)" - onkeyup="searchBox.OnSearchFieldChange(event)"/> - </span><span class="right"> - <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> - </span> - </div> - </li> - </ul> - </div> -<!-- window showing the filter options --> -<div id="MSearchSelectWindow" - onmouseover="return searchBox.OnSearchSelectShow()" - onmouseout="return searchBox.OnSearchSelectHide()" - onkeydown="return searchBox.OnSearchSelectKey(event)"> -<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> - -<!-- iframe showing the search results (closed by default) --> -<div id="MSearchResultsWindow"> -<iframe src="javascript:void(0)" frameborder="0" - name="MSearchResults" id="MSearchResults"> -</iframe> -</div> - -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="dir_5fe60cdff4f93e8435d81ae38a3e2e18.html">zenxml</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="headertitle"> -<div class="title">xml.h</div> </div> -</div><!--header--> -<div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// * This file is part of the FreeFileSync project. It is distributed under *</span></div> -<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *</span></div> -<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved *</span></div> -<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// **************************************************************************</span></div> -<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div> -<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#ifndef ZEN_XML_HEADER_349578228034572457454554</span></div> -<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor"></span><span class="preprocessor">#define ZEN_XML_HEADER_349578228034572457454554</span></div> -<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor"></span></div> -<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "bind.h"</span></div> -<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div> -<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="keyword">namespace </span>zen {}</div> -<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div> -<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#endif //ZEN_XML_HEADER_349578228034572457454554</span></div> -</div><!-- fragment --></div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.6 -</small></address> -</body> -</html> diff --git a/zenxml/zenxml/bind.h b/zenxml/zenxml/bind.h deleted file mode 100644 index e66d841b..00000000 --- a/zenxml/zenxml/bind.h +++ /dev/null @@ -1,390 +0,0 @@ -// ************************************************************************** -// * This file is part of the FreeFileSync project. It is distributed under * -// * GNU General Public License: http://www.gnu.org/licenses/gpl.html * -// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved * -// ************************************************************************** - -#ifndef ZEN_XML_BIND_HEADER_9081740816593478258435 -#define ZEN_XML_BIND_HEADER_9081740816593478258435 - -#include <set> -#include "cvrt_struc.h" -#include "parser.h" -#include "io.h" - -namespace zen -{ -/** -\file -\brief Map user data types to XML -*/ - -///Load XML document from a file -/** -Convenience function that does nothing more than calling loadStream() and parse(). - -\tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... -\param filename Input file name -\returns The loaded XML document -\throw XmlFileError -\throw XmlParsingError -*/ -template <class String> inline -XmlDoc load(const String& filename) //throw XmlFileError, XmlParsingError -{ - std::string stream = loadStream(filename); //throw XmlFileError - return parse(stream); //throw XmlParsingError -} - - -///Save XML document to a file -/** -Convenience function that does nothing more than calling serialize() and saveStream(). - -\tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... -\param doc The XML document to save -\param filename Output file name -\param lineBreak Line break, default: carriage return + new line -\param indent Indentation, default: four space characters -\throw XmlFileError -*/ -template <class String> inline -void save(const XmlDoc& doc, - const String& filename, - const std::string& lineBreak = "\r\n", - const std::string& indent = " ") //throw XmlFileError -{ - std::string stream = serialize(doc, lineBreak, indent); //throw () - saveStream(stream, filename); //throw XmlFileError -} - - -///Proxy class to conveniently convert user data into XML structure -class XmlOut -{ -public: - ///Construct an output proxy for an XML document - /** - \code - zen::XmlDoc doc; - - zen::XmlOut out(doc); - out["elem1"]( 1); // - out["elem2"]( 2); //write data into XML elements - out["elem3"](-3); // - - save(doc, "out.xml"); //throw XmlFileError - \endcode - Output: - \verbatim - <?xml version="1.0" encoding="UTF-8"?> - <Root> - <elem1>1</elem1> - <elem2>2</elem2> - <elem3>-3</elem3> - </Root> - \endverbatim - */ - XmlOut(XmlDoc& doc) : ref_(&doc.root()) {} - ///Construct an output proxy for a single XML element - /** - \sa XmlOut(XmlDoc& doc) - */ - XmlOut(XmlElement& element) : ref_(&element) {} - - ///Retrieve a handle to an XML child element for writing - /** - The child element will be created if it is not yet existing. - \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... - \param name The name of the child element - */ - template <class String> - XmlOut operator[](const String& name) const - { - const std::string utf8name = utfCvrtTo<std::string>(name); - XmlElement* child = ref_->getChild(utf8name); - return child ? *child : ref_->addChild(utf8name); - } - - ///Write user data to the underlying XML element - /** - This conversion requires a specialization of zen::writeText() or zen::writeStruc() for type T. - \tparam T User type that is converted into an XML element value. - */ - template <class T> - void operator()(const T& value) { writeStruc(value, *ref_); } - - ///Write user data to an XML attribute - /** - This conversion requires a specialization of zen::writeText() for type T. - \code - zen::XmlDoc doc; - - zen::XmlOut out(doc); - out["elem"].attribute("attr1", 1); // - out["elem"].attribute("attr2", 2); //write data into XML attributes - out["elem"].attribute("attr3", -3); // - - save(doc, "out.xml"); //throw XmlFileError - \endcode - Output: - \verbatim - <?xml version="1.0" encoding="UTF-8"?> - <Root> - <elem attr1="1" attr2="2" attr3="-3"/> - </Root> - \endverbatim - - \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... - \tparam T String-convertible user data type: e.g. any string-like type, all built-in arithmetic numbers - \sa XmlElement::setAttribute() - */ - template <class String, class T> - void attribute(const String& name, const T& value) { ref_->setAttribute(name, value); } - - ///Return a reference to the underlying Xml element - XmlElement& ref() { return *ref_; } - -private: - XmlElement* ref_; //always bound! -}; - - -///Proxy class to conveniently convert XML structure to user data -class XmlIn -{ - class ErrorLog; - struct ConversionToBool { int dummy; }; - -public: - ///Construct an input proxy for an XML document - /** - \code - zen::XmlDoc doc; - ... //load document - zen::XmlIn in(doc); - in["elem1"](value1); // - in["elem2"](value2); //read data from XML elements into variables "value1", "value2", "value3" - in["elem3"](value3); // - \endcode - */ - XmlIn(const XmlDoc& doc) : refIndex(0), log(std::make_shared<ErrorLog>()) { refList.push_back(&doc.root()); } - ///Construct an input proxy for a single XML element, may be nullptr - /** - \sa XmlIn(const XmlDoc& doc) - */ - XmlIn(const XmlElement* element) : refIndex(0), log(std::make_shared<ErrorLog>()) { refList.push_back(element); } - ///Construct an input proxy for a single XML element - /** - \sa XmlIn(const XmlDoc& doc) - */ - XmlIn(const XmlElement& element) : refIndex(0), log(std::make_shared<ErrorLog>()) { refList.push_back(&element); } - - ///Retrieve a handle to an XML child element for reading - /** - It is \b not an error if the child element does not exist, but only later if a conversion to user data is attempted. - \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... - \param name The name of the child element - */ - template <class String> - XmlIn operator[](const String& name) const - { - std::vector<const XmlElement*> childList; - - if (refIndex < refList.size()) - { - auto iterPair = refList[refIndex]->getChildren(name); - std::for_each(iterPair.first, iterPair.second, - [&](const XmlElement& child) { childList.push_back(&child); }); - } - - return XmlIn(childList, childList.empty() ? getChildNameFormatted(name) : std::string(), log); - } - - ///Refer to next sibling element with the same name - /** - <b>Example:</b> Loop over all XML child elements named "Item" - \verbatim - <?xml version="1.0" encoding="UTF-8"?> - <Root> - <Item>1</Item> - <Item>3</Item> - <Item>5</Item> - </Root> - \endverbatim - - \code - zen::XmlIn in(doc); - ... - for (zen::XmlIn child = in["Item"]; child; child.next()) - { - ... - } - \endcode - */ - void next() { ++refIndex; } - - ///Read user data from the underlying XML element - /** - This conversion requires a specialization of zen::readText() or zen::readStruc() for type T. - \tparam T User type that receives the data - \return "true" if data was read successfully - */ - template <class T> - bool operator()(T& value) const - { - if (refIndex < refList.size()) - { - bool success = readStruc(*refList[refIndex], value); - if (!success) - log->notifyConversionError(getNameFormatted()); - return success; - } - else - { - log->notifyMissingElement(getNameFormatted()); - return false; - } - } - - ///Read user data from an XML attribute - /** - This conversion requires a specialization of zen::readText() for type T. - - \code - zen::XmlDoc doc; - ... //load document - zen::XmlIn in(doc); - in["elem"].attribute("attr1", value1); // - in["elem"].attribute("attr2", value2); //read data from XML attributes into variables "value1", "value2", "value3" - in["elem"].attribute("attr3", value3); // - \endcode - - \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... - \tparam T String-convertible user data type: e.g. any string-like type, all built-in arithmetic numbers - \returns "true" if the attribute was found and the conversion to the output value was successful. - \sa XmlElement::getAttribute() - */ - template <class String, class T> - bool attribute(const String& name, T& value) const - { - if (refIndex < refList.size()) - { - bool success = refList[refIndex]->getAttribute(name, value); - if (!success) - log->notifyMissingAttribute(getNameFormatted(), utfCvrtTo<std::string>(name)); - return success; - } - else - { - log->notifyMissingElement(getNameFormatted()); - return false; - } - } - - ///Return a pointer to the underlying Xml element, may be nullptr - const XmlElement* get() const { return refIndex < refList.size() ? refList[refIndex] : nullptr; } - - ///Test whether the underlying XML element exists - /** - \code - XmlIn in(doc); - XmlIn child = in["elem1"]; - if (child) - ... - \endcode - Use member pointer as implicit conversion to bool (C++ Templates - Vandevoorde/Josuttis; chapter 20) - */ - operator int ConversionToBool::* () const { return get() ? &ConversionToBool::dummy : nullptr; } - - ///Notifies errors while mapping the XML to user data - /** - Error logging is shared by each hiearchy of XmlIn proxy instances that are created from each other. Consequently it doesn't matter which instance you query for errors: - \code - XmlIn in(doc); - XmlIn inItem = in["item1"]; - - int value = 0; - inItem(value); //let's assume this conversion failed - - assert(in.errorsOccured() == inItem.errorsOccured()); - assert(in.getErrorsAs<std::string>() == inItem.getErrorsAs<std::string>()); - \endcode - - Note that error logging is \b NOT global, but owned by all instances of a hierarchy of XmlIn proxies. - Therefore it's safe to use unrelated XmlIn proxies in multiple threads. - \n\n - However be aware that the chain of connected proxy instances will be broken once you call XmlIn::get() to retrieve the underlying pointer. - Errors that occur when working with this pointer are not logged by the original set of related instances. - */ - bool errorsOccured() const { return !log->elementList().empty(); } - - ///Get a list of XML element and attribute names which failed to convert to user data. - /** - \tparam String Arbitrary string class: e.g. std::string, std::wstring, wxString, MyStringClass, ... - \returns A list of XML element and attribute names, empty list if no errors occured. - */ - template <class String> - std::vector<String> getErrorsAs() const - { - std::vector<String> output; - const auto& elements = log->elementList(); - std::transform(elements.begin(), elements.end(), std::back_inserter(output), [](const std::string& str) { return utfCvrtTo<String>(str); }); - return output; - } - -private: - XmlIn(const std::vector<const XmlElement*>& siblingList, const std::string& elementNameFmt, const std::shared_ptr<ErrorLog>& sharedlog) : - refList(siblingList), refIndex(0), formattedName(elementNameFmt), log(sharedlog) - { assert((!siblingList.empty() && elementNameFmt.empty()) || (siblingList.empty() && !elementNameFmt.empty())); } - - static std::string getNameFormatted(const XmlElement& elem) //"<Root> <Level1> <Level2>" - { - return (elem.parent() ? getNameFormatted(*elem.parent()) + " " : std::string()) + "<" + elem.getNameAs<std::string>() + ">"; - } - - std::string getNameFormatted() const - { - if (refIndex < refList.size()) - { - assert(formattedName.empty()); - return getNameFormatted(*refList[refIndex]); - } - else - return formattedName; - } - - std::string getChildNameFormatted(const std::string& childName) const - { - std::string parentName = getNameFormatted(); - return (parentName.empty() ? std::string() : (parentName + " ")) + "<" + childName + ">"; - } - - class ErrorLog - { - public: - void notifyConversionError (const std::string& formattedName) { insert(formattedName); } - void notifyMissingElement (const std::string& formattedName) { insert(formattedName); } - void notifyMissingAttribute(const std::string& formattedName, const std::string& attribName) { insert(formattedName + " @" + attribName); } - - const std::vector<std::string>& elementList() const { return failedElements; } - - private: - void insert(const std::string& newVal) - { - if (usedElements.insert(newVal).second) - failedElements.push_back(newVal); - } - - std::vector<std::string> failedElements; //unique list of failed elements - std::set<std::string> usedElements; - }; - - std::vector<const XmlElement*> refList; //all sibling elements with same name (all pointers bound!) - size_t refIndex; //this sibling's index in refList - std::string formattedName; //contains full and formatted element name if (and only if) refList is empty - std::shared_ptr<ErrorLog> log; //always bound -}; -} - -#endif //ZEN_XML_BIND_HEADER_9081740816593478258435 diff --git a/zenxml/zenxml/cvrt_struc.h b/zenxml/zenxml/cvrt_struc.h deleted file mode 100644 index ceb4297d..00000000 --- a/zenxml/zenxml/cvrt_struc.h +++ /dev/null @@ -1,211 +0,0 @@ -// ************************************************************************** -// * This file is part of the FreeFileSync project. It is distributed under * -// * GNU General Public License: http://www.gnu.org/licenses/gpl.html * -// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved * -// ************************************************************************** - -#ifndef ZEN_XML_CONVERT_STRUC_HEADER_018727409908342709743 -#define ZEN_XML_CONVERT_STRUC_HEADER_018727409908342709743 - -#include "dom.h" - -namespace zen -{ -/** -\file -\brief Handle conversion of arbitrary types to and from XML elements. -See comments in cvrt_text.h -*/ - -///Convert XML element to structured user data -/** - \param input The input XML element. - \param value Conversion target value. - \return "true" if value was read successfully. -*/ -template <class T> bool readStruc(const XmlElement& input, T& value); -///Convert structured user data into an XML element -/** - \param value The value to be converted. - \param output The output XML element. -*/ -template <class T> void writeStruc(const T& value, XmlElement& output); - - - - - - - - - - - - - - - - - -//------------------------------ implementation ------------------------------------- -namespace impl_2384343 -{ -ZEN_INIT_DETECT_MEMBER_TYPE(value_type); -ZEN_INIT_DETECT_MEMBER_TYPE(iterator); -ZEN_INIT_DETECT_MEMBER_TYPE(const_iterator); - -ZEN_INIT_DETECT_MEMBER(begin) // -ZEN_INIT_DETECT_MEMBER(end) //we don't know the exact declaration of the member attribute: may be in a base class! -ZEN_INIT_DETECT_MEMBER(insert) // -} - -template <typename T> -struct IsStlContainer : - StaticBool< - impl_2384343::HasMemberType_value_type <T>::value&& - impl_2384343::HasMemberType_iterator <T>::value&& - impl_2384343::HasMemberType_const_iterator<T>::value&& - impl_2384343::HasMember_begin <T>::value&& - impl_2384343::HasMember_end <T>::value&& - impl_2384343::HasMember_insert <T>::value> {}; - - -namespace impl_2384343 -{ -ZEN_INIT_DETECT_MEMBER_TYPE(first_type); -ZEN_INIT_DETECT_MEMBER_TYPE(second_type); - -ZEN_INIT_DETECT_MEMBER(first) //we don't know the exact declaration of the member attribute: may be in a base class! -ZEN_INIT_DETECT_MEMBER(second) // -} - -template <typename T> -struct IsStlPair : - StaticBool< - impl_2384343::HasMemberType_first_type <T>::value&& - impl_2384343::HasMemberType_second_type<T>::value&& - impl_2384343::HasMember_first <T>::value&& - impl_2384343::HasMember_second <T>::value> {}; - -//###################################################################################### - -//Conversion from arbitrary types to an XML element -enum ValueType -{ - VALUE_TYPE_STL_CONTAINER, - VALUE_TYPE_STL_PAIR, - VALUE_TYPE_OTHER, -}; - -template <class T> -struct GetValueType : StaticEnum<ValueType, - GetTextType<T>::value != TEXT_TYPE_OTHER ? VALUE_TYPE_OTHER : //some string classes are also STL containers, so check this first - IsStlContainer<T>::value ? VALUE_TYPE_STL_CONTAINER : - IsStlPair<T>::value ? VALUE_TYPE_STL_PAIR : - VALUE_TYPE_OTHER> {}; - - -template <class T, ValueType type> -struct ConvertElement; -/* -> expected interface -{ - void writeStruc(const T& value, XmlElement& output) const; - bool readStruc(const XmlElement& input, T& value) const; -}; -*/ - - -//partial specialization: handle conversion for all STL-container types! -template <class T> -struct ConvertElement<T, VALUE_TYPE_STL_CONTAINER> -{ - void writeStruc(const T& value, XmlElement& output) const - { - std::for_each(value.begin(), value.end(), - [&](const typename T::value_type & childVal) - { - XmlElement& newChild = output.addChild("Item"); - zen::writeStruc(childVal, newChild); - }); - } - bool readStruc(const XmlElement& input, T& value) const - { - bool success = true; - value.clear(); - - auto iterPair = input.getChildren("Item"); - for (auto iter = iterPair.first; iter != iterPair.second; ++iter) - { - typename T::value_type childVal; //MSVC 2010 bug: cannot put this into a lambda body - if (zen::readStruc(*iter, childVal)) - value.insert(value.end(), childVal); - else - success = false; - } - return success; - } -}; - - -//partial specialization: handle conversion for std::pair -template <class T> -struct ConvertElement<T, VALUE_TYPE_STL_PAIR> -{ - void writeStruc(const T& value, XmlElement& output) const - { - XmlElement& child1 = output.addChild("one"); //don't use "1st/2nd", this will confuse a few pedantic XML parsers - zen::writeStruc(value.first, child1); - - XmlElement& child2 = output.addChild("two"); - zen::writeStruc(value.second, child2); - } - bool readStruc(const XmlElement& input, T& value) const - { - bool success = true; - const XmlElement* child1 = input.getChild("one"); - if (!child1 || !zen::readStruc(*child1, value.first)) - success = false; - - const XmlElement* child2 = input.getChild("two"); - if (!child2 || !zen::readStruc(*child2, value.second)) - success = false; - - return success; - } -}; - - -//partial specialization: not a pure structured type, try text conversion (thereby respect user specializations of writeText()/readText()) -template <class T> -struct ConvertElement<T, VALUE_TYPE_OTHER> -{ - void writeStruc(const T& value, XmlElement& output) const - { - std::string tmp; - writeText(value, tmp); - output.setValue(tmp); - } - bool readStruc(const XmlElement& input, T& value) const - { - std::string rawStr; - input.getValue(rawStr); - return readText(rawStr, value); - } -}; - - -template <class T> inline -void writeStruc(const T& value, XmlElement& output) -{ - ConvertElement<T, GetValueType<T>::value>().writeStruc(value, output); -} - - -template <class T> inline -bool readStruc(const XmlElement& input, T& value) -{ - return ConvertElement<T, GetValueType<T>::value>().readStruc(input, value); -} -} - -#endif //ZEN_XML_CONVERT_STRUC_HEADER_018727409908342709743 diff --git a/zenxml/zenxml/cvrt_text.h b/zenxml/zenxml/cvrt_text.h deleted file mode 100644 index 43272d48..00000000 --- a/zenxml/zenxml/cvrt_text.h +++ /dev/null @@ -1,222 +0,0 @@ -// ************************************************************************** -// * This file is part of the FreeFileSync project. It is distributed under * -// * GNU General Public License: http://www.gnu.org/licenses/gpl.html * -// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved * -// ************************************************************************** - -#ifndef ZEN_XML_CONVERT_TEXT_HEADER_018727339083427097434 -#define ZEN_XML_CONVERT_TEXT_HEADER_018727339083427097434 - -#include <zen/utf.h> -#include <zen/string_tools.h> - -namespace zen -{ -/** -\file -\brief Handle conversion of string-convertible types to and from std::string. - -It is \b not required to call these functions directly. They are implicitly used by zen::XmlElement::getValue(), -zen::XmlElement::setValue(), zen::XmlElement::getAttribute() and zen::XmlElement::setAttribute(). -\n\n -Conversions for the following user types are supported by default: - - strings - std::string, std::wstring, char*, wchar_t*, char, wchar_t, ect..., all STL-compatible-string-classes - - numbers - int, double, float, bool, long, ect..., all built-in numbers - - STL containers - std::map, std::set, std::vector, std::list, ect..., all STL-compatible-containers - - std::pair - -You can add support for additional types via template specialization. \n\n -Specialize zen::readStruc() and zen::writeStruc() to enable conversion from structured user types to XML elements. -Specialize zen::readText() and zen::writeText() to enable conversion from string-convertible user types to std::string. -Prefer latter if possible since it does not only enable conversions from XML elements to user data, but also from and to XML attributes. -\n\n -<b> Example: </b> type "bool" -\code -namespace zen -{ -template <> inline -void writeText(const bool& value, std::string& output) -{ - output = value ? "true" : "false"; -} - -template <> inline -bool readText(const std::string& input, bool& value) -{ - std::string tmp = input; - zen::trim(tmp); - if (tmp == "true") - value = true; - else if (tmp == "false") - value = false; - else - return false; - return true; -} -} -\endcode -*/ - - -///Convert text to user data - used by XML elements and attributes -/** - \param input Input text. - \param value Conversion target value. - \return "true" if value was read successfully. -*/ -template <class T> bool readText(const std::string& input, T& value); -///Convert user data into text - used by XML elements and attributes -/** - \param value The value to be converted. - \param output Output text. -*/ -template <class T> void writeText(const T& value, std::string& output); - - -/* Different classes of data types: - ------------------------------ -| structured | readStruc/writeStruc - e.g. string-convertible types, STL containers, std::pair, structured user types -| ------------------------- | -| | to-string-convertible | | readText/writeText - e.g. string-like types, all built-in arithmetic numbers, bool -| | --------------- | | -| | | string-like | | | utfCvrtTo - e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... -| | --------------- | | -| ------------------------- | ------------------------------ -*/ - - - - - - - - - - - - - - - -//------------------------------ implementation ------------------------------------- - -//Conversion from arbitrary types to text (for use with XML elements and attributes) -enum TextType -{ - TEXT_TYPE_BOOL, - TEXT_TYPE_NUMBER, - TEXT_TYPE_STRING, - TEXT_TYPE_OTHER, -}; - -template <class T> -struct GetTextType : StaticEnum<TextType, - IsSameType<T, bool>::value ? TEXT_TYPE_BOOL : - IsStringLike<T>::value ? TEXT_TYPE_STRING : //string before number to correctly handle char/wchar_t -> this was an issue with Loki only! - IsArithmetic<T>::value ? TEXT_TYPE_NUMBER : // - TEXT_TYPE_OTHER> {}; - -//###################################################################################### - -template <class T, TextType type> -struct ConvertText; -/* -> expected interface -{ - void writeText(const T& value, std::string& output) const; - bool readText(const std::string& input, T& value) const; -}; -*/ - -//partial specialization: type bool -template <class T> -struct ConvertText<T, TEXT_TYPE_BOOL> -{ - void writeText(bool value, std::string& output) const - { - output = value ? "true" : "false"; - } - bool readText(const std::string& input, bool& value) const - { - std::string tmp = input; - zen::trim(tmp); - if (tmp == "true") - value = true; - else if (tmp == "false") - value = false; - else - return false; - return true; - } -}; - -//partial specialization: handle conversion for all built-in arithmetic types! -template <class T> -struct ConvertText<T, TEXT_TYPE_NUMBER> -{ - void writeText(const T& value, std::string& output) const - { - output = numberTo<std::string>(value); - } - bool readText(const std::string& input, T& value) const - { - value = stringTo<T>(input); - return true; - } -}; - -//partial specialization: handle conversion for all string-like types! -template <class T> -struct ConvertText<T, TEXT_TYPE_STRING> -{ - void writeText(const T& value, std::string& output) const - { - output = utfCvrtTo<std::string>(value); - } - bool readText(const std::string& input, T& value) const - { - value = utfCvrtTo<T>(input); - return true; - } -}; - - -//partial specialization: unknown type -template <class T> -struct ConvertText<T, TEXT_TYPE_OTHER> -{ - //########################################################################################################################################### - assert_static(sizeof(T) == -1); - /* - ATTENTION: The data type T is yet unknown to the zen::Xml framework! - - Please provide a specialization for T of the following two functions in order to handle conversions to XML elements and attributes - - template <> void zen::writeText(const T& value, std::string& output) - template <> bool zen::readText(const std::string& input, T& value) - - If T is structured and cannot be converted to a text representation specialize these two functions to allow at least for conversions to XML elements: - - template <> void zen::writeStruc(const T& value, XmlElement& output) - template <> bool zen::readStruc(const XmlElement& input, T& value) - */ - //########################################################################################################################################### -}; - - -template <class T> inline -void writeText(const T& value, std::string& output) -{ - ConvertText<T, GetTextType<T>::value>().writeText(value, output); -} - - -template <class T> inline -bool readText(const std::string& input, T& value) -{ - return ConvertText<T, GetTextType<T>::value>().readText(input, value); -} -} - -#endif //ZEN_XML_CONVERT_TEXT_HEADER_018727339083427097434 diff --git a/zenxml/zenxml/dom.h b/zenxml/zenxml/dom.h deleted file mode 100644 index cb5e5aab..00000000 --- a/zenxml/zenxml/dom.h +++ /dev/null @@ -1,335 +0,0 @@ -// ************************************************************************** -// * This file is part of the FreeFileSync project. It is distributed under * -// * GNU General Public License: http://www.gnu.org/licenses/gpl.html * -// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved * -// ************************************************************************** - -#ifndef ZEN_XML_DOM_HEADER_82085720723894567204564256 -#define ZEN_XML_DOM_HEADER_82085720723894567204564256 - -#include <string> -#include <vector> -#include <memory> -#include <map> -#include "cvrt_text.h" //"readText/writeText" - -namespace zen -{ -class XmlDoc; - -/// An XML element -class XmlElement -{ - struct PrivateConstruction {}; -public: - //Construct an empty XML element - //This constructor should be private, however std::make_shared() requires public access - //Therefore at least prevent users from calling it via private dummy type PrivateConstruction - template <class String> - XmlElement(const String& name, XmlElement* parentElement, PrivateConstruction) : name_(utfCvrtTo<std::string>(name)), parent_(parentElement) {} - - ///Retrieve the name of this XML element. - /** - \tparam String Arbitrary string class: e.g. std::string, std::wstring, wxString, MyStringClass, ... - \returns Name of the XML element. - */ - template <class String> - String getNameAs() const { return utfCvrtTo<String>(name_); } - - ///Get the value of this element as a user type. - /** - \tparam T Arbitrary user data type: e.g. any string class, all built-in arithmetic numbers, STL container, ... - \returns "true" if Xml element was successfully converted to value, cannot fail for string-like types - */ - template <class T> - bool getValue(T& value) const { return readStruc(*this, value); } - - ///Set the value of this element. - /** - \tparam T Arbitrary user data type: e.g. any string-like type, all built-in arithmetic numbers, STL container, ... - */ - template <class T> - void setValue(const T& value) { writeStruc(value, *this); } - - ///Retrieve an attribute by name. - /** - \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... - \tparam T String-convertible user data type: e.g. any string class, all built-in arithmetic numbers - \param name The name of the attribute to retrieve. - \param value The value of the attribute converted to T. - \return "true" if value was retrieved successfully. - */ - template <class String, class T> - bool getAttribute(const String& name, T& value) const - { - auto it = attributes.find(utfCvrtTo<std::string>(name)); - return it == attributes.end() ? false : readText(it->second, value); - } - - ///Create or update an XML attribute. - /** - \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... - \tparam T String-convertible user data type: e.g. any string-like type, all built-in arithmetic numbers - \param name The name of the attribute to create or update. - \param value The value to set. - */ - template <class String, class T> - void setAttribute(const String& name, const T& value) - { - std::string attrValue; - writeText(value, attrValue); - attributes[utfCvrtTo<std::string>(name)] = attrValue; - } - - ///Remove the attribute with the given name. - /** - \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... - */ - template <class String> - void removeAttribute(const String& name) { attributes.erase(utfCvrtTo<std::string>(name)); } - - ///Create a new child element and return a reference to it. - /** - \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... - \param name The name of the child element to be created. - */ - template <class String> - XmlElement& addChild(const String& name) - { - std::string utf8Name = utfCvrtTo<std::string>(name); - auto newElement = std::make_shared<XmlElement>(utf8Name, this, PrivateConstruction()); - childElements.push_back(newElement); - childElementsSorted.insert(std::make_pair(utf8Name, newElement)); - return *newElement; - } - - ///Retrieve a child element with the given name. - /** - \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... - \param name The name of the child element to be retrieved. - \return A pointer to the child element or nullptr if none was found. - */ - template <class String> - const XmlElement* getChild(const String& name) const - { - auto it = childElementsSorted.find(utfCvrtTo<std::string>(name)); - return it == childElementsSorted.end() ? nullptr : &*(it->second); - } - - ///\sa getChild - template <class String> - XmlElement* getChild(const String& name) - { - return const_cast<XmlElement*>(static_cast<const XmlElement*>(this)->getChild(name)); - } - - template < class IterTy, //underlying iterator type - class T, //target object type - class AccessPolicy > //access policy: see AccessPtrMap - class PtrIter : public std::iterator<std::input_iterator_tag, T>, private AccessPolicy //get rid of shared_ptr indirection - { - public: - PtrIter(IterTy it) : it_(it) {} - PtrIter(const PtrIter& other) : it_(other.it_) {} - PtrIter& operator++() { ++it_; return *this; } - PtrIter operator++(int) { PtrIter tmp(*this); operator++(); return tmp; } - inline friend bool operator==(const PtrIter& lhs, const PtrIter& rhs) { return lhs.it_ == rhs.it_; } - inline friend bool operator!=(const PtrIter& lhs, const PtrIter& rhs) { return !(lhs == rhs); } - T& operator* () { return AccessPolicy::template objectRef<T>(it_); } - T* operator->() { return &AccessPolicy::template objectRef<T>(it_); } - private: - IterTy it_; - }; - - struct AccessPtrMap - { - template <class T, class IterTy> - T& objectRef(const IterTy& it) { return *(it->second); } - }; - - typedef PtrIter<std::multimap<std::string, std::shared_ptr<XmlElement>>::iterator, XmlElement, AccessPtrMap> ChildIter2; - typedef PtrIter<std::multimap<std::string, std::shared_ptr<XmlElement>>::const_iterator, const XmlElement, AccessPtrMap> ChildIterConst2; - - ///Access all child elements with the given name via STL iterators. - /** - \code - auto iterPair = elem.getChildren("Item"); - std::for_each(iterPair.first, iterPair.second, - [](const XmlElement& child) { ... }); - \endcode - \param name The name of the child elements to be retrieved. - \return A pair of STL begin/end iterators to access the child elements sequentially. - */ - template <class String> - std::pair<ChildIterConst2, ChildIterConst2> getChildren(const String& name) const { return childElementsSorted.equal_range(utfCvrtTo<std::string>(name)); } - - ///\sa getChildren - template <class String> - std::pair<ChildIter2, ChildIter2> getChildren(const String& name) { return childElementsSorted.equal_range(utfCvrtTo<std::string>(name)); } - - struct AccessPtrVec - { - template <class T, class IterTy> - T& objectRef(const IterTy& it) { return **it; } - }; - - typedef PtrIter<std::vector<std::shared_ptr<XmlElement>>::iterator, XmlElement, AccessPtrVec> ChildIter; - typedef PtrIter<std::vector<std::shared_ptr<XmlElement>>::const_iterator, const XmlElement, AccessPtrVec> ChildIterConst; - - ///Access all child elements sequentially via STL iterators. - /** - \code - auto iterPair = elem.getChildren(); - std::for_each(iterPair.first, iterPair.second, - [](const XmlElement& child) { ... }); - \endcode - \return A pair of STL begin/end iterators to access all child elements sequentially. - */ - std::pair<ChildIterConst, ChildIterConst> getChildren() const { return std::make_pair(childElements.begin(), childElements.end()); } - - ///\sa getChildren - std::pair<ChildIter, ChildIter> getChildren() { return std::make_pair(childElements.begin(), childElements.end()); } - - ///Get parent XML element, may be nullptr for root element - XmlElement* parent() { return parent_; }; - ///Get parent XML element, may be nullptr for root element - const XmlElement* parent() const { return parent_; }; - - - typedef std::map<std::string, std::string>::const_iterator AttrIter; - - /* -> disabled documentation extraction - \brief Get all attributes associated with the element. - \code - auto iterPair = elem.getAttributes(); - for (auto it = iterPair.first; it != iterPair.second; ++it) - std::cout << "name: " << it->first << " value: " << it->second << "\n"; - \endcode - \return A pair of STL begin/end iterators to access all attributes sequentially as a list of name/value pairs of std::string. - */ - std::pair<AttrIter, AttrIter> getAttributes() const { return std::make_pair(attributes.begin(), attributes.end()); } - - //Transactionally swap two elements. -> disabled documentation extraction - void swap(XmlElement& other) - { - name_ .swap(other.name_); - value_ .swap(other.value_); - attributes.swap(other.attributes); - childElements.swap(other.childElements); - childElementsSorted.swap(other.childElementsSorted); - //std::swap(parent_, other.parent_); -> parent is physical location; update children's parent reference instead: - std::for_each( childElements.begin(), childElements.end(), [&](const std::shared_ptr<XmlElement>& child) { child->parent_ = this; }); - std::for_each(other.childElements.begin(), other.childElements.end(), [&](const std::shared_ptr<XmlElement>& child) { child->parent_ = &other; }); - } - -private: - friend class XmlDoc; - - XmlElement(const XmlElement&); //not implemented - XmlElement& operator=(const XmlElement&); // - - std::string name_; - std::string value_; - std::map<std::string, std::string> attributes; - std::vector<std::shared_ptr<XmlElement>> childElements; //all child elements in order of creation - std::multimap<std::string, std::shared_ptr<XmlElement>> childElementsSorted; //alternate key: sorted by element name - XmlElement* parent_; -}; - - -//XmlElement::setValue<T>() calls zen::writeStruc() which calls XmlElement::setValue() ... => these two specializations end the circle -template <> inline -void XmlElement::setValue(const std::string& value) { value_ = value; } - -template <> inline -bool XmlElement::getValue(std::string& value) const { value = value_; return true; } - - -///The complete XML document -class XmlDoc -{ -public: - ///Default constructor setting up an empty XML document with a standard declaration: <?xml version="1.0" encoding="UTF-8" ?> - XmlDoc() : version_("1.0"), encoding_("UTF-8"), rootElement("Root", nullptr, XmlElement::PrivateConstruction()) {} - - XmlDoc(XmlDoc&& tmp) : rootElement("Root", nullptr, XmlElement::PrivateConstruction()) { swap(tmp); } - XmlDoc& operator=(XmlDoc&& tmp) { swap(tmp); return *this; } - - //Setup an empty XML document - /** - \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... - \param rootName The name of the XML document's root element. - */ - template <class String> - XmlDoc(String rootName) : version_("1.0"), encoding_("UTF-8"), rootElement(rootName, nullptr, XmlElement::PrivateConstruction()) {} - - ///Get a const reference to the document's root element. - const XmlElement& root() const { return rootElement; } - ///Get a reference to the document's root element. - XmlElement& root() { return rootElement; } - - ///Get the version used in the XML declaration. - /** - \tparam String Arbitrary string class: e.g. std::string, std::wstring, wxString, MyStringClass, ... - */ - template <class String> - String getVersionAs() const { return utfCvrtTo<String>(version_); } - - ///Set the version used in the XML declaration. - /** - \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... - */ - template <class String> - void setVersion(const String& version) { version_ = utfCvrtTo<std::string>(version); } - - ///Get the encoding used in the XML declaration. - /** - \tparam String Arbitrary string class: e.g. std::string, std::wstring, wxString, MyStringClass, ... - */ - template <class String> - String getEncodingAs() const { return utfCvrtTo<String>(encoding_); } - - ///Set the encoding used in the XML declaration. - /** - \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... - */ - template <class String> - void setEncoding(const String& encoding) { encoding_ = utfCvrtTo<std::string>(encoding); } - - ///Get the standalone string used in the XML declaration. - /** - \tparam String Arbitrary string class: e.g. std::string, std::wstring, wxString, MyStringClass, ... - */ - template <class String> - String getStandaloneAs() const { return utfCvrtTo<String>(standalone_); } - - ///Set the standalone string used in the XML declaration. - /** - \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... - */ - template <class String> - void setStandalone(const String& standalone) { standalone_ = utfCvrtTo<std::string>(standalone); } - - //Transactionally swap two elements. -> disabled documentation extraction - void swap(XmlDoc& other) - { - version_ .swap(other.version_); - encoding_ .swap(other.encoding_); - standalone_.swap(other.standalone_); - rootElement.swap(other.rootElement); - } - -private: - XmlDoc(const XmlDoc&); //not implemented, thanks to XmlElement::parent_ - XmlDoc& operator=(const XmlDoc&); // - - std::string version_; - std::string encoding_; - std::string standalone_; - - XmlElement rootElement; -}; - -} - -#endif //ZEN_XML_DOM_HEADER_82085720723894567204564256 diff --git a/zenxml/zenxml/error.h b/zenxml/zenxml/error.h deleted file mode 100644 index 645f24f7..00000000 --- a/zenxml/zenxml/error.h +++ /dev/null @@ -1,19 +0,0 @@ -// ************************************************************************** -// * This file is part of the FreeFileSync project. It is distributed under * -// * GNU General Public License: http://www.gnu.org/licenses/gpl.html * -// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved * -// ************************************************************************** - -#ifndef ZEN_XML_ERROR_HEADER_018734618433021489473214873214 -#define ZEN_XML_ERROR_HEADER_018734618433021489473214873214 - -namespace zen -{ -///Exception base class for zen::Xml -struct XmlError -{ - virtual ~XmlError() {} -}; -} - -#endif //ZEN_XML_ERROR_HEADER_018734618433021489473214873214 diff --git a/zenxml/zenxml/io.h b/zenxml/zenxml/io.h deleted file mode 100644 index 09bb7358..00000000 --- a/zenxml/zenxml/io.h +++ /dev/null @@ -1,125 +0,0 @@ -// ************************************************************************** -// * This file is part of the FreeFileSync project. It is distributed under * -// * GNU General Public License: http://www.gnu.org/licenses/gpl.html * -// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved * -// ************************************************************************** - -#ifndef ZEN_XML_IO_HEADER_8917640501480763248343343 -#define ZEN_XML_IO_HEADER_8917640501480763248343343 - -#include <cstdio> -#include <cerrno> -#include <zen/scope_guard.h> -#include <zen/utf.h> -#include "error.h" - -namespace zen -{ -/** -\file -\brief Save and load byte streams from files -*/ - -#if !defined(ZEN_WIN) && !defined(ZEN_LINUX) && !defined(ZEN_MAC) -#error Please specify your platform: #define ZEN_WIN, ZEN_LINUX or ZEN_MAC -#endif - - -///Exception thrown due to failed file I/O -struct XmlFileError : public XmlError -{ - typedef int ErrorCode; - - explicit XmlFileError(ErrorCode ec) : lastError(ec) {} - ///Native error code: errno - ErrorCode lastError; -}; - - -#ifdef ZEN_WIN -namespace implemenation //sad but true -{ -template <class String> inline -FILE* fopen(const String& filename, const wchar_t* mode) -{ -#ifdef _MSC_VER - FILE* handle = nullptr; - errno_t rv = ::_wfopen_s(&handle, utfCvrtTo<std::wstring>(filename).c_str(), mode); //more secure? - (void)rv; - return handle; -#else - return ::_wfopen(utfCvrtTo<std::wstring>(filename).c_str(), mode); -#endif -} -} -#endif - - -///Save byte stream to a file -/** -\tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... -\param stream Input byte stream -\param filename Output file name -\throw XmlFileError -*/ -template <class String> -void saveStream(const std::string& stream, const String& filename) //throw XmlFileError -{ -#ifdef ZEN_WIN - FILE* handle = implemenation::fopen(utfCvrtTo<std::wstring>(filename).c_str(), L"wb"); -#else - FILE* handle = ::fopen(utfCvrtTo<std::string>(filename).c_str(), "w"); -#endif - if (handle == nullptr) - throw XmlFileError(errno); - ZEN_ON_SCOPE_EXIT(::fclose(handle)); - - const size_t bytesWritten = ::fwrite(stream.c_str(), 1, stream.size(), handle); - if (::ferror(handle) != 0) - throw XmlFileError(errno); - - (void)bytesWritten; - assert(bytesWritten == stream.size()); -} - - -///Load byte stream from a file -/** -\tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ... -\param filename Input file name -\return Output byte stream -\throw XmlFileError -*/ -template <class String> -std::string loadStream(const String& filename) //throw XmlFileError -{ -#ifdef ZEN_WIN - FILE* handle = implemenation::fopen(utfCvrtTo<std::wstring>(filename).c_str(), L"rb"); -#else - FILE* handle = ::fopen(utfCvrtTo<std::string>(filename).c_str(), "r"); -#endif - if (handle == nullptr) - throw XmlFileError(errno); - ZEN_ON_SCOPE_EXIT(::fclose(handle)); - - std::string stream; - const size_t blockSize = 64 * 1024; - do - { - stream.resize(stream.size() + blockSize); //let's pray std::string implements exponential growth! - - const size_t bytesRead = ::fread(&*(stream.begin() + stream.size() - blockSize), 1, blockSize, handle); - if (::ferror(handle)) - throw XmlFileError(errno); - if (bytesRead > blockSize) - throw XmlFileError(0); - if (bytesRead < blockSize) - stream.resize(stream.size() - (blockSize - bytesRead)); //caveat: unsigned arithmetics - } - while (!::feof(handle)); - - return stream; -} -} - -#endif //ZEN_XML_IO_HEADER_8917640501480763248343343 diff --git a/zenxml/zenxml/parser.h b/zenxml/zenxml/parser.h deleted file mode 100644 index 19d36ed5..00000000 --- a/zenxml/zenxml/parser.h +++ /dev/null @@ -1,618 +0,0 @@ -// ************************************************************************** -// * This file is part of the FreeFileSync project. It is distributed under * -// * GNU General Public License: http://www.gnu.org/licenses/gpl.html * -// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved * -// ************************************************************************** - -#ifndef ZEN_XML_PARSER_HEADER_81248670213764583021432 -#define ZEN_XML_PARSER_HEADER_81248670213764583021432 - -#include <cstdio> -#include <cstddef> //ptrdiff_t; req. on Linux -#include <zen/string_traits.h> -#include "dom.h" -#include "error.h" - -namespace zen -{ -/** -\file -\brief Convert an XML document object model (class XmlDoc) to and from a byte stream representation. -*/ - -///Save XML document as a byte stream -/** -\param doc Input XML document -\param lineBreak Line break, default: carriage return + new line -\param indent Indentation, default: four space characters -\return Output byte stream -*/ -std::string serialize(const XmlDoc& doc, - const std::string& lineBreak = "\r\n", - const std::string& indent = " "); //throw () - -///Exception thrown due to an XML parsing error -struct XmlParsingError : public XmlError -{ - XmlParsingError(size_t rowNo, size_t colNo) : row(rowNo), col(colNo) {} - ///Input file row where the parsing error occured (zero-based) - size_t row; //beginning with 0 - ///Input file column where the parsing error occured (zero-based) - size_t col; // -}; - - -///Load XML document from a byte stream -/** -\param stream Input byte stream -\returns Output XML document -\throw XmlParsingError -*/ -XmlDoc parse(const std::string& stream); //throw XmlParsingError - - - - - - - - - - - - - - - - - - - - -//---------------------------- implementation ---------------------------- -//see: http://www.w3.org/TR/xml/ - -namespace implementation -{ -inline -std::pair<char, char> hexify(unsigned char c) -{ - auto hexifyDigit = [](int num) -> char //input [0, 15], output 0-9, A-F - { - assert(0 <= num&& num <= 15); //guaranteed by design below! - return static_cast<char>(num <= 9 ? //no signed/unsigned char problem here! - '0' + num : - 'A' + (num - 10)); - }; - return std::make_pair(hexifyDigit(c / 16), hexifyDigit(c % 16)); -} - - -inline -char unhexify(char high, char low) -{ - auto unhexifyDigit = [](char hex) -> int //input 0-9, a-f, A-F; output range: [0, 15] - { - if ('0' <= hex && hex <= '9') //no signed/unsigned char problem here! - return hex - '0'; - else if ('A' <= hex && hex <= 'F') - return (hex - 'A') + 10; - else if ('a' <= hex && hex <= 'f') - return (hex - 'a') + 10; - assert(false); - return 0; - }; - return static_cast<unsigned char>(16 * unhexifyDigit(high) + unhexifyDigit(low)); //[!] convert to unsigned char first, then to char (which may be signed) -}; - - -template <class Predicate> inline -std::string normalize(const std::string& str, Predicate pred) //pred: unary function taking a char, return true if value shall be encoded as hex -{ - std::string output; - std::for_each(str.begin(), str.end(), - [&](char c) - { - if (c == '&') // - output += "&"; - else if (c == '<') //normalization mandatory: http://www.w3.org/TR/xml/#syntax - output += "<"; - else if (c == '>') // - output += ">"; - else if (pred(c)) - { - if (c == '\'') - output += "'"; - else if (c == '\"') - output += """; - else - { - output += "&#x"; - const auto hexDigits = hexify(c); //hexify beats "printNumber<std::string>("&#x%02X;", c)" by a nice factor of 3! - output += hexDigits.first; - output += hexDigits.second; - output += ';'; - } - } - else - output += c; - }); - return output; -} - -inline -std::string normalizeName(const std::string& str) -{ - return normalize(str, [](char c) { return isWhiteSpace(c) || c == '=' || c == '/' || c == '\'' || c == '\"'; }); -} - -inline -std::string normalizeElementValue(const std::string& str) -{ - return normalize(str, [](char c) { return static_cast<unsigned char>(c) < 32; }); -} - -inline -std::string normalizeAttribValue(const std::string& str) -{ - return normalize(str, [](char c) { return static_cast<unsigned char>(c) < 32 || c == '\'' || c == '\"'; }); -} - - -template <class CharIterator, size_t N> inline -bool checkEntity(CharIterator& first, CharIterator last, const char (&placeholder)[N]) -{ - assert(placeholder[N - 1] == 0); - const ptrdiff_t strLen = N - 1; //don't count null-terminator - if (last - first >= strLen && std::equal(first, first + strLen, placeholder)) - { - first += strLen - 1; - return true; - } - return false; -} - - -namespace -{ -std::string denormalize(const std::string& str) -{ - std::string output; - for (auto it = str.begin(); it != str.end(); ++it) - { - const char c = *it; - - if (c == '&') - { - if (checkEntity(it, str.end(), "&")) - output += '&'; - else if (checkEntity(it, str.end(), "<")) - output += '<'; - else if (checkEntity(it, str.end(), ">")) - output += '>'; - else if (checkEntity(it, str.end(), "'")) - output += '\''; - else if (checkEntity(it, str.end(), """)) - output += '\"'; - else if (str.end() - it >= 6 && - it[1] == '#' && - it[2] == 'x' && - it[5] == ';') - { - output += unhexify(it[3], it[4]); //unhexify beats "::sscanf(&it[3], "%02X", &tmp)" by a factor of 3000 for ~250000 calls!!! - it += 5; - } - else - output += c; //unexpected char! - } - else if (c == '\r') //map all end-of-line characters to \n http://www.w3.org/TR/xml/#sec-line-ends - { - auto itNext = it + 1; - if (itNext != str.end() && *itNext == '\n') - ++it; - output += '\n'; - } - else - output += c; - }; - return output; -} - - -void serialize(const XmlElement& element, std::string& stream, - const std::string& lineBreak, - const std::string& indent, - size_t indentLevel) -{ - const std::string& nameFmt = normalizeName(element.getNameAs<std::string>()); - - for (size_t i = 0; i < indentLevel; ++i) - stream += indent; - - stream += '<' + nameFmt; - - auto attr = element.getAttributes(); - for (auto it = attr.first; it != attr.second; ++it) - stream += ' ' + normalizeName(it->first) + "=\"" + normalizeAttribValue(it->second) + '\"'; - - //no support for mixed-mode content - auto iterPair = element.getChildren(); - if (iterPair.first != iterPair.second) //structured element - { - stream += '>' + lineBreak; - - std::for_each(iterPair.first, iterPair.second, - [&](const XmlElement & el) { serialize(el, stream, lineBreak, indent, indentLevel + 1); }); - - for (size_t i = 0; i < indentLevel; ++i) - stream += indent; - stream += "</" + nameFmt + '>' + lineBreak; - } - else - { - std::string value; - element.getValue(value); - - if (!value.empty()) //value element - stream += '>' + normalizeElementValue(value) + "</" + nameFmt + '>' + lineBreak; - else //empty element - stream += "/>" + lineBreak; - } -} - -std::string serialize(const XmlDoc& doc, - const std::string& lineBreak, - const std::string& indent) -{ - std::string version = doc.getVersionAs<std::string>(); - if (!version.empty()) - version = " version=\"" + normalizeAttribValue(version) + '\"'; - - std::string encoding = doc.getEncodingAs<std::string>(); - if (!encoding.empty()) - encoding = " encoding=\"" + normalizeAttribValue(encoding) + '\"'; - - std::string standalone = doc.getStandaloneAs<std::string>(); - if (!standalone.empty()) - standalone = " standalone=\"" + normalizeAttribValue(standalone) + '\"'; - - std::string output = "<?xml" + version + encoding + standalone + "?>" + lineBreak; - serialize(doc.root(), output, lineBreak, indent, 0); - return output; -} -} -} - -inline -std::string serialize(const XmlDoc& doc, - const std::string& lineBreak, - const std::string& indent) { return implementation::serialize(doc, lineBreak, indent); } - -/* -Grammar for XML parser -------------------------------- -document-expression: - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> - element-expression: - -element-expression: - <string attributes-expression/> - <string attributes-expression> pm-expression </string> - -element-list-expression: - <empty> - element-expression element-list-expression - -attributes-expression: - <empty> - string="string" attributes-expression - -pm-expression: - string - element-list-expression -*/ - -namespace implementation -{ -struct Token -{ - enum Type - { - TK_LESS, - TK_GREATER, - TK_LESS_SLASH, - TK_SLASH_GREATER, - TK_EQUAL, - TK_QUOTE, - TK_DECL_BEGIN, - TK_DECL_END, - TK_NAME, - TK_END - }; - - Token(Type t) : type(t) {} - Token(const std::string& txt) : type(TK_NAME), name(txt) {} - - Type type; - std::string name; //filled if type == TK_NAME -}; - -class Scanner -{ -public: - Scanner(const std::string& stream) : - xmlCommentBegin("<!--"), - xmlCommentEnd ("-->"), - stream_(stream), - pos(stream_.begin()) - { - if (zen::startsWith(stream_, BYTE_ORDER_MARK_UTF8)) - pos += strLength(BYTE_ORDER_MARK_UTF8); - - tokens.push_back(std::make_pair("<?xml", Token::TK_DECL_BEGIN)); - tokens.push_back(std::make_pair("?>", Token::TK_DECL_END)); - tokens.push_back(std::make_pair("</", Token::TK_LESS_SLASH)); - tokens.push_back(std::make_pair("/>", Token::TK_SLASH_GREATER)); - tokens.push_back(std::make_pair("<" , Token::TK_LESS)); //evaluate after TK_DECL_BEGIN! - tokens.push_back(std::make_pair(">" , Token::TK_GREATER)); - tokens.push_back(std::make_pair("=" , Token::TK_EQUAL)); - tokens.push_back(std::make_pair("\"", Token::TK_QUOTE)); - tokens.push_back(std::make_pair("\'", Token::TK_QUOTE)); - } - - Token nextToken() //throw XmlParsingError - { - //skip whitespace - pos = std::find_if(pos, stream_.end(), [](char c) { return !zen::isWhiteSpace(c); }); - - if (pos == stream_.end()) - return Token::TK_END; - - //skip XML comments - if (startsWith(xmlCommentBegin)) - { - auto it = std::search(pos + xmlCommentBegin.size(), stream_.end(), xmlCommentEnd.begin(), xmlCommentEnd.end()); - if (it != stream_.end()) - { - pos = it + xmlCommentEnd.size(); - return nextToken(); - } - } - - for (auto it = tokens.begin(); it != tokens.end(); ++it) - if (startsWith(it->first)) - { - pos += it->first.size(); - return it->second; - } - - auto nameEnd = std::find_if(pos, stream_.end(), [](char c) - { - return c == '<' || - c == '>' || - c == '=' || - c == '/' || - c == '\'' || - c == '\"' || - zen::isWhiteSpace(c); - }); - - if (nameEnd != pos) - { - std::string name(&*pos, nameEnd - pos); - pos = nameEnd; - return implementation::denormalize(name); - } - - //unknown token - throw XmlParsingError(posRow(), posCol()); - } - - std::string extractElementValue() - { - auto it = std::find_if(pos, stream_.end(), [](char c) - { - return c == '<' || - c == '>'; - }); - std::string output(pos, it); - pos = it; - return implementation::denormalize(output); - } - - std::string extractAttributeValue() - { - auto it = std::find_if(pos, stream_.end(), [](char c) - { - return c == '<' || - c == '>' || - c == '\'' || - c == '\"'; - }); - std::string output(pos, it); - pos = it; - return implementation::denormalize(output); - } - - size_t posRow() const //current row beginning with 0 - { - const size_t crSum = std::count(stream_.begin(), pos, '\r'); //carriage returns - const size_t nlSum = std::count(stream_.begin(), pos, '\n'); //new lines - assert(crSum == 0 || nlSum == 0 || crSum == nlSum); - return std::max(crSum, nlSum); //be compatible with Linux/Mac/Win - } - - size_t posCol() const //current col beginning with 0 - { - //seek beginning of line - for (auto it = pos; it != stream_.begin(); ) - { - --it; - if (*it == '\r' || *it == '\n') - return pos - it - 1; - } - return pos - stream_.begin(); - } - -private: - Scanner(const Scanner&); - Scanner& operator=(const Scanner&); - - bool startsWith(const std::string& prefix) const - { - if (stream_.end() - pos < static_cast<ptrdiff_t>(prefix.size())) - return false; - return std::equal(prefix.begin(), prefix.end(), pos); - } - - typedef std::vector<std::pair<std::string, Token::Type> > TokenList; - TokenList tokens; - - const std::string xmlCommentBegin; - const std::string xmlCommentEnd; - - const std::string stream_; - std::string::const_iterator pos; -}; - - -class XmlParser -{ -public: - XmlParser(const std::string& stream) : - scn(stream), - tk(scn.nextToken()) {} - - XmlDoc parse() //throw XmlParsingError - { - XmlDoc doc; - - //declaration (optional) - if (token().type == Token::TK_DECL_BEGIN) - { - nextToken(); - - while (token().type == Token::TK_NAME) - { - std::string attribName = token().name; - nextToken(); - - consumeToken(Token::TK_EQUAL); - expectToken(Token::TK_QUOTE); - std::string attribValue = scn.extractAttributeValue(); - nextToken(); - - consumeToken(Token::TK_QUOTE); - - if (attribName == "version") - doc.setVersion(attribValue); - else if (attribName == "encoding") - doc.setEncoding(attribValue); - else if (attribName == "standalone") - doc.setStandalone(attribValue); - } - consumeToken(Token::TK_DECL_END); - } - - XmlDoc dummy; - XmlElement& elemTmp = dummy.root(); - parseChildElements(elemTmp); - - auto iterPair = elemTmp.getChildren(); - if (iterPair.first != iterPair.second) - doc.root().swap(*iterPair.first); - - expectToken(Token::TK_END); - return doc; - }; - -private: - XmlParser(const XmlParser&); - XmlParser& operator=(const XmlParser&); - - void parseChildElements(XmlElement& parent) - { - while (token().type == Token::TK_LESS) - { - nextToken(); - - expectToken(Token::TK_NAME); - std::string elementName = token().name; - nextToken(); - - XmlElement& newElement = parent.addChild(elementName); - - parseAttributes(newElement); - - if (token().type == Token::TK_SLASH_GREATER) //empty element - { - nextToken(); - continue; - } - - expectToken(Token::TK_GREATER); - std::string elementValue = scn.extractElementValue(); - nextToken(); - - //no support for mixed-mode content - if (token().type == Token::TK_LESS) //structured element - parseChildElements(newElement); - else //value element - newElement.setValue(elementValue); - - consumeToken(Token::TK_LESS_SLASH); - - if (token().type != Token::TK_NAME || - elementName != token().name) - throw XmlParsingError(scn.posRow(), scn.posCol()); - nextToken(); - - consumeToken(Token::TK_GREATER); - } - }; - - void parseAttributes(XmlElement& element) - { - while (token().type == Token::TK_NAME) - { - std::string attribName = token().name; - nextToken(); - - consumeToken(Token::TK_EQUAL); - expectToken(Token::TK_QUOTE); - std::string attribValue = scn.extractAttributeValue(); - nextToken(); - - consumeToken(Token::TK_QUOTE); - element.setAttribute(attribName, attribValue); - } - } - - const Token& token() const { return tk; } - void nextToken() { tk = scn.nextToken(); } - - void consumeToken(Token::Type t) //throw XmlParsingError - { - expectToken(t); //throw XmlParsingError - nextToken(); - } - - void expectToken(Token::Type t) //throw XmlParsingError - { - if (token().type != t) - throw XmlParsingError(scn.posRow(), scn.posCol()); - } - - Scanner scn; - Token tk; -}; -} - -inline -XmlDoc parse(const std::string& stream) //throw XmlParsingError -{ - return implementation::XmlParser(stream).parse(); //throw XmlParsingError -} -} - -#endif //ZEN_XML_PARSER_HEADER_81248670213764583021432 diff --git a/zenxml/zenxml/unit_test.cpp b/zenxml/zenxml/unit_test.cpp deleted file mode 100644 index 084e764b..00000000 --- a/zenxml/zenxml/unit_test.cpp +++ /dev/null @@ -1,95 +0,0 @@ -// ************************************************************************** -// * This file is part of the FreeFileSync project. It is distributed under * -// * GNU General Public License: http://www.gnu.org/licenses/gpl.html * -// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved * -// ************************************************************************** - -#include <set> -#include <map> -#include <deque> -#include <vector> -#include <list> -#include <utility> -#include "xml.h" - -using namespace zen; - -namespace -{ -void unit_test() -{ - class Dummy {}; - - //compile time checks only - - assert_static(!IsStlContainer<wchar_t> ::value); - assert_static(!IsStlContainer<char> ::value); - assert_static(!IsStlContainer<Dummy> ::value); - assert_static(!IsStlContainer<NullType> ::value); - assert_static(IsStlContainer<std::set <int>> ::value); - assert_static(IsStlContainer<std::deque <float>> ::value); - assert_static(IsStlContainer<std::list <size_t>> ::value); - assert_static((IsStlContainer<std::map <double, char>> ::value)); - assert_static((IsStlContainer<std::multimap<short, double>>::value)); - assert_static(IsStlContainer <std::vector <wchar_t>> ::value); - assert_static((IsStlPair <std::pair<int, double>> ::value)); - assert_static(!IsStlPair<Dummy> ::value); - - assert_static(!IsStringLike<Dummy>::value); - assert_static(!IsStringLike<int>::value); - assert_static(!IsStringLike<double>::value); - assert_static(!IsStringLike<short>::value); - assert_static(IsStringLike<char>::value); - assert_static(IsStringLike<const wchar_t>::value); - assert_static(IsStringLike<const char>::value); - assert_static(IsStringLike<wchar_t>::value); - assert_static(IsStringLike<char*>::value); - assert_static(IsStringLike<wchar_t*>::value); - assert_static(IsStringLike<char* const>::value); - assert_static(IsStringLike<wchar_t* const>::value); - assert_static(IsStringLike<const char*>::value); - assert_static(IsStringLike<const char* const>::value); - assert_static(IsStringLike<const wchar_t*>::value); - assert_static(IsStringLike<const wchar_t* const>::value); - assert_static(IsStringLike<const char[4]>::value); - assert_static(IsStringLike<const wchar_t[4]>::value); - assert_static(IsStringLike<char[4]>::value); - assert_static(IsStringLike<wchar_t[4]>::value); - assert_static(IsStringLike<std::string>::value); - assert_static(IsStringLike<std::wstring>::value); - assert_static(IsStringLike<const std::string>::value); - assert_static(IsStringLike<const std::wstring>::value); - assert_static(IsStringLike<const std::string&>::value); - assert_static(IsStringLike<const std::wstring&>::value); - assert_static(IsStringLike<std::string&>::value); - assert_static(IsStringLike<std::wstring&>::value); - - assert_static(!(IsSameType<GetCharType<int>::Type, char>::value)); - assert_static(!(IsSameType<GetCharType<double>::Type, char>::value)); - assert_static(!(IsSameType<GetCharType<short>::Type, char>::value)); - assert_static((IsSameType<GetCharType<char>::Type, char>::value)); - assert_static((IsSameType<GetCharType<wchar_t>::Type, wchar_t>::value)); - assert_static((IsSameType<GetCharType<const char>::Type, char>::value)); - assert_static((IsSameType<GetCharType<const wchar_t>::Type, wchar_t>::value)); - assert_static((IsSameType<GetCharType<char*>::Type, char>::value)); - assert_static((IsSameType<GetCharType<wchar_t*>::Type, wchar_t>::value)); - assert_static((IsSameType<GetCharType<char* const>::Type, char>::value)); - assert_static((IsSameType<GetCharType<wchar_t* const>::Type, wchar_t>::value)); - assert_static((IsSameType<GetCharType<const char*>::Type, char>::value)); - assert_static((IsSameType<GetCharType<const char* const>::Type, char>::value)); - assert_static((IsSameType<GetCharType<const wchar_t*>::Type, wchar_t>::value)); - assert_static((IsSameType<GetCharType<const wchar_t* const>::Type, wchar_t>::value)); - assert_static((IsSameType<GetCharType<const char[4]>::Type, char>::value)); - assert_static((IsSameType<GetCharType<const wchar_t[4]>::Type, wchar_t>::value)); - assert_static((IsSameType<GetCharType<char[4]>::Type, char>::value)); - assert_static((IsSameType<GetCharType<wchar_t[4]>::Type, wchar_t>::value)); - assert_static((IsSameType<GetCharType<std::string>::Type, char>::value)); - assert_static((IsSameType<GetCharType<std::wstring>::Type, wchar_t>::value)); - assert_static((IsSameType<GetCharType<const std::string>::Type, char>::value)); - assert_static((IsSameType<GetCharType<const std::wstring>::Type, wchar_t>::value)); - assert_static((IsSameType<GetCharType<const std::string&>::Type, char>::value)); - assert_static((IsSameType<GetCharType<const std::wstring&>::Type, wchar_t>::value)); - assert_static((IsSameType<GetCharType<std::string&>::Type, char>::value)); - assert_static((IsSameType<GetCharType<std::wstring&>::Type, wchar_t>::value)); -} -} diff --git a/zenxml/zenxml/xml.h b/zenxml/zenxml/xml.h deleted file mode 100644 index 411593e7..00000000 --- a/zenxml/zenxml/xml.h +++ /dev/null @@ -1,15 +0,0 @@ -// ************************************************************************** -// * This file is part of the FreeFileSync project. It is distributed under * -// * GNU General Public License: http://www.gnu.org/licenses/gpl.html * -// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved * -// ************************************************************************** - -#ifndef ZEN_XML_HEADER_349578228034572457454554 -#define ZEN_XML_HEADER_349578228034572457454554 - -#include "bind.h" - -/// The zen::Xml namespace -namespace zen {} - -#endif //ZEN_XML_HEADER_349578228034572457454554
\ No newline at end of file |