1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6 <meta name="generator" content="Doxygen 1.8.9.1"/>
7 <title>libxml++: xmlpp::Validator Class Reference</title>
8 <link href="tabs.css" rel="stylesheet" type="text/css"/>
9 <script type="text/javascript" src="jquery.js"></script>
10 <script type="text/javascript" src="dynsections.js"></script>
11 <link href="doxygen.css" rel="stylesheet" type="text/css" />
12 <link href="doxygen-extra.css" rel="stylesheet" type="text/css"/>
15 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
17 <table cellspacing="0" cellpadding="0">
19 <tr style="height: 56px;">
20 <td style="padding-left: 0.5em;">
21 <div id="projectname">libxml++
22  <span id="projectnumber">2.39.2</span>
29 <!-- end header part -->
30 <!-- Generated by Doxygen 1.8.9.1 -->
31 <div id="navrow1" class="tabs">
33 <li><a href="index.html"><span>Main Page</span></a></li>
34 <li><a href="pages.html"><span>Related Pages</span></a></li>
35 <li><a href="namespaces.html"><span>Namespaces</span></a></li>
36 <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
39 <div id="navrow2" class="tabs2">
41 <li><a href="annotated.html"><span>Class List</span></a></li>
42 <li><a href="classes.html"><span>Class Index</span></a></li>
43 <li><a href="inherits.html"><span>Class Hierarchy</span></a></li>
44 <li><a href="functions.html"><span>Class Members</span></a></li>
47 <div id="nav-path" class="navpath">
49 <li class="navelem"><a class="el" href="namespacexmlpp.html">xmlpp</a></li><li class="navelem"><a class="el" href="classxmlpp_1_1Validator.html">Validator</a></li> </ul>
54 <a href="#pub-methods">Public Member Functions</a> |
55 <a href="#pro-methods">Protected Member Functions</a> |
56 <a href="#pro-static-methods">Static Protected Member Functions</a> |
57 <a href="#pro-attribs">Protected Attributes</a> |
58 <a href="classxmlpp_1_1Validator-members.html">List of all members</a> </div>
59 <div class="headertitle">
60 <div class="title">xmlpp::Validator Class Reference</div> </div>
62 <div class="contents">
64 <p>Base class for XML validators.
65 <a href="classxmlpp_1_1Validator.html#details">More...</a></p>
67 <p><code>#include <libxml++/validators/validator.h></code></p>
68 <div class="dynheader">
69 Inheritance diagram for xmlpp::Validator:</div>
70 <div class="dyncontent">
71 <div class="center"><img src="classxmlpp_1_1Validator__inherit__graph.png" border="0" usemap="#xmlpp_1_1Validator_inherit__map" alt="Inheritance graph"/></div>
72 <map name="xmlpp_1_1Validator_inherit__map" id="xmlpp_1_1Validator_inherit__map">
73 <area shape="rect" id="node3" href="classxmlpp_1_1DtdValidator.html" title="XML DTD validator. " alt="" coords="5,155,153,181"/><area shape="rect" id="node4" href="classxmlpp_1_1SchemaValidator.html" title="XML Schema Validator. " alt="" coords="178,155,357,181"/><area shape="rect" id="node5" href="classxmlpp_1_1SchemaValidatorBase.html" title="Base class for schema validators. " alt="" coords="381,155,591,181"/><area shape="rect" id="node2" href="classxmlpp_1_1NonCopyable.html" title="A base for classes which cannot be copied. " alt="" coords="190,5,345,32"/><area shape="rect" id="node6" href="classxmlpp_1_1RelaxNGValidator.html" title="RelaxNG schema validator. " alt="" coords="303,229,482,256"/><area shape="rect" id="node7" href="classxmlpp_1_1XsdValidator.html" title="XSD schema validator. " alt="" coords="507,229,655,256"/></map>
74 <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
75 <table class="memberdecls">
76 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
77 Public Member Functions</h2></td></tr>
78 <tr class="memitem:a2e25d9106542fac59c7a4368257cdcb5"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxmlpp_1_1Validator.html#a2e25d9106542fac59c7a4368257cdcb5">Validator</a> ()</td></tr>
79 <tr class="separator:a2e25d9106542fac59c7a4368257cdcb5"><td class="memSeparator" colspan="2"> </td></tr>
80 <tr class="memitem:a436707ae4c543734a55d7dde76679406"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxmlpp_1_1Validator.html#a436707ae4c543734a55d7dde76679406">~Validator</a> () override</td></tr>
81 <tr class="separator:a436707ae4c543734a55d7dde76679406"><td class="memSeparator" colspan="2"> </td></tr>
82 </table><table class="memberdecls">
83 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
84 Protected Member Functions</h2></td></tr>
85 <tr class="memitem:a2af695894f22e61b4f85551edefd104d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classxmlpp_1_1Validator.html#a2af695894f22e61b4f85551edefd104d">check_for_exception</a> ()</td></tr>
86 <tr class="separator:a2af695894f22e61b4f85551edefd104d"><td class="memSeparator" colspan="2"> </td></tr>
87 <tr class="memitem:a655f06aa683577c26dcb2edba2e9e84b"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classxmlpp_1_1Validator.html#a655f06aa683577c26dcb2edba2e9e84b">check_for_validity_messages</a> ()</td></tr>
88 <tr class="separator:a655f06aa683577c26dcb2edba2e9e84b"><td class="memSeparator" colspan="2"> </td></tr>
89 <tr class="memitem:a4d02cc2d687f0bd28e3c777ebbc7c458"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classxmlpp_1_1Validator.html#a4d02cc2d687f0bd28e3c777ebbc7c458">handleException</a> (const <a class="el" href="classxmlpp_1_1exception.html">exception</a>& e)</td></tr>
90 <tr class="separator:a4d02cc2d687f0bd28e3c777ebbc7c458"><td class="memSeparator" colspan="2"> </td></tr>
91 <tr class="memitem:a12ee744e385987547d1c449a1e4bf596"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classxmlpp_1_1Validator.html#a12ee744e385987547d1c449a1e4bf596">initialize_valid</a> ()</td></tr>
92 <tr class="separator:a12ee744e385987547d1c449a1e4bf596"><td class="memSeparator" colspan="2"> </td></tr>
93 <tr class="memitem:af59b45514fe397db1dbb025a1a3b103f"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classxmlpp_1_1Validator.html#af59b45514fe397db1dbb025a1a3b103f">on_validity_error</a> (const <a class="elRef" doxygen="glibmm-2.4.tag:http://library.gnome.org/devel/glibmm/unstable/" href="http://library.gnome.org/devel/glibmm/unstable/classGlib_1_1ustring.html">Glib::ustring</a>& message)</td></tr>
94 <tr class="separator:af59b45514fe397db1dbb025a1a3b103f"><td class="memSeparator" colspan="2"> </td></tr>
95 <tr class="memitem:a7ef36a34b258165082c4f33737e743d2"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classxmlpp_1_1Validator.html#a7ef36a34b258165082c4f33737e743d2">on_validity_warning</a> (const <a class="elRef" doxygen="glibmm-2.4.tag:http://library.gnome.org/devel/glibmm/unstable/" href="http://library.gnome.org/devel/glibmm/unstable/classGlib_1_1ustring.html">Glib::ustring</a>& message)</td></tr>
96 <tr class="separator:a7ef36a34b258165082c4f33737e743d2"><td class="memSeparator" colspan="2"> </td></tr>
97 <tr class="memitem:a317466ca90b8e53d6f57e49fd032d8cb"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classxmlpp_1_1Validator.html#a317466ca90b8e53d6f57e49fd032d8cb">release_underlying</a> ()</td></tr>
98 <tr class="separator:a317466ca90b8e53d6f57e49fd032d8cb"><td class="memSeparator" colspan="2"> </td></tr>
99 </table><table class="memberdecls">
100 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
101 Static Protected Member Functions</h2></td></tr>
102 <tr class="memitem:a616cad28f3d4f59b76edb916bffeb6ef"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classxmlpp_1_1Validator.html#a616cad28f3d4f59b76edb916bffeb6ef">callback_validity_error</a> (void* ctx, const char* msg,...)</td></tr>
103 <tr class="separator:a616cad28f3d4f59b76edb916bffeb6ef"><td class="memSeparator" colspan="2"> </td></tr>
104 <tr class="memitem:a5f8938e79ca2c52ec26e499b356985a0"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classxmlpp_1_1Validator.html#a5f8938e79ca2c52ec26e499b356985a0">callback_validity_warning</a> (void* ctx, const char* msg,...)</td></tr>
105 <tr class="separator:a5f8938e79ca2c52ec26e499b356985a0"><td class="memSeparator" colspan="2"> </td></tr>
106 </table><table class="memberdecls">
107 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
108 Protected Attributes</h2></td></tr>
109 <tr class="memitem:a55796f9903e66aa4730313936fab1f0b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxmlpp_1_1exception.html">exception</a>* </td><td class="memItemRight" valign="bottom"><a class="el" href="classxmlpp_1_1Validator.html#a55796f9903e66aa4730313936fab1f0b">exception_</a></td></tr>
110 <tr class="separator:a55796f9903e66aa4730313936fab1f0b"><td class="memSeparator" colspan="2"> </td></tr>
111 <tr class="memitem:a1c6ef225bbdf9053a7e83587262f30e9"><td class="memItemLeft" align="right" valign="top">_xmlValidCtxt* </td><td class="memItemRight" valign="bottom"><a class="el" href="classxmlpp_1_1Validator.html#a1c6ef225bbdf9053a7e83587262f30e9">valid_</a></td></tr>
112 <tr class="separator:a1c6ef225bbdf9053a7e83587262f30e9"><td class="memSeparator" colspan="2"> </td></tr>
113 <tr class="memitem:ac28c8c06c9c3cbbebfa0d1c90d20cdf5"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="glibmm-2.4.tag:http://library.gnome.org/devel/glibmm/unstable/" href="http://library.gnome.org/devel/glibmm/unstable/classGlib_1_1ustring.html">Glib::ustring</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxmlpp_1_1Validator.html#ac28c8c06c9c3cbbebfa0d1c90d20cdf5">validate_error_</a></td></tr>
114 <tr class="separator:ac28c8c06c9c3cbbebfa0d1c90d20cdf5"><td class="memSeparator" colspan="2"> </td></tr>
115 <tr class="memitem:aa876f0e05457de97a3c2d598e4af2580"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="glibmm-2.4.tag:http://library.gnome.org/devel/glibmm/unstable/" href="http://library.gnome.org/devel/glibmm/unstable/classGlib_1_1ustring.html">Glib::ustring</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classxmlpp_1_1Validator.html#aa876f0e05457de97a3c2d598e4af2580">validate_warning_</a></td></tr>
116 <tr class="separator:aa876f0e05457de97a3c2d598e4af2580"><td class="memSeparator" colspan="2"> </td></tr>
118 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
119 <div class="textblock"><p>Base class for XML validators. </p>
120 </div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
121 <a class="anchor" id="a2e25d9106542fac59c7a4368257cdcb5"></a>
122 <div class="memitem">
123 <div class="memproto">
124 <table class="memname">
126 <td class="memname">xmlpp::Validator::Validator </td>
128 <td class="paramname"></td><td>)</td>
132 </div><div class="memdoc">
136 <a class="anchor" id="a436707ae4c543734a55d7dde76679406"></a>
137 <div class="memitem">
138 <div class="memproto">
139 <table class="mlabels">
141 <td class="mlabels-left">
142 <table class="memname">
144 <td class="memname">xmlpp::Validator::~Validator </td>
146 <td class="paramname"></td><td>)</td>
151 <td class="mlabels-right">
152 <span class="mlabels"><span class="mlabel">override</span></span> </td>
155 </div><div class="memdoc">
159 <h2 class="groupheader">Member Function Documentation</h2>
160 <a class="anchor" id="a616cad28f3d4f59b76edb916bffeb6ef"></a>
161 <div class="memitem">
162 <div class="memproto">
163 <table class="mlabels">
165 <td class="mlabels-left">
166 <table class="memname">
168 <td class="memname">static void xmlpp::Validator::callback_validity_error </td>
170 <td class="paramtype">void * </td>
171 <td class="paramname"><em>ctx</em>, </td>
174 <td class="paramkey"></td>
176 <td class="paramtype">const char * </td>
177 <td class="paramname"><em>msg</em>, </td>
180 <td class="paramkey"></td>
182 <td class="paramtype"> </td>
183 <td class="paramname"><em>...</em> </td>
192 <td class="mlabels-right">
193 <span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span> </td>
196 </div><div class="memdoc">
200 <a class="anchor" id="a5f8938e79ca2c52ec26e499b356985a0"></a>
201 <div class="memitem">
202 <div class="memproto">
203 <table class="mlabels">
205 <td class="mlabels-left">
206 <table class="memname">
208 <td class="memname">static void xmlpp::Validator::callback_validity_warning </td>
210 <td class="paramtype">void * </td>
211 <td class="paramname"><em>ctx</em>, </td>
214 <td class="paramkey"></td>
216 <td class="paramtype">const char * </td>
217 <td class="paramname"><em>msg</em>, </td>
220 <td class="paramkey"></td>
222 <td class="paramtype"> </td>
223 <td class="paramname"><em>...</em> </td>
232 <td class="mlabels-right">
233 <span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span> </td>
236 </div><div class="memdoc">
240 <a class="anchor" id="a2af695894f22e61b4f85551edefd104d"></a>
241 <div class="memitem">
242 <div class="memproto">
243 <table class="mlabels">
245 <td class="mlabels-left">
246 <table class="memname">
248 <td class="memname">virtual void xmlpp::Validator::check_for_exception </td>
250 <td class="paramname"></td><td>)</td>
255 <td class="mlabels-right">
256 <span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
259 </div><div class="memdoc">
263 <a class="anchor" id="a655f06aa683577c26dcb2edba2e9e84b"></a>
264 <div class="memitem">
265 <div class="memproto">
266 <table class="mlabels">
268 <td class="mlabels-left">
269 <table class="memname">
271 <td class="memname">virtual void xmlpp::Validator::check_for_validity_messages </td>
273 <td class="paramname"></td><td>)</td>
278 <td class="mlabels-right">
279 <span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
282 </div><div class="memdoc">
286 <a class="anchor" id="a4d02cc2d687f0bd28e3c777ebbc7c458"></a>
287 <div class="memitem">
288 <div class="memproto">
289 <table class="mlabels">
291 <td class="mlabels-left">
292 <table class="memname">
294 <td class="memname">virtual void xmlpp::Validator::handleException </td>
296 <td class="paramtype">const <a class="el" href="classxmlpp_1_1exception.html">exception</a>& </td>
297 <td class="paramname"><em>e</em></td><td>)</td>
302 <td class="mlabels-right">
303 <span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
306 </div><div class="memdoc">
310 <a class="anchor" id="a12ee744e385987547d1c449a1e4bf596"></a>
311 <div class="memitem">
312 <div class="memproto">
313 <table class="mlabels">
315 <td class="mlabels-left">
316 <table class="memname">
318 <td class="memname">virtual void xmlpp::Validator::initialize_valid </td>
320 <td class="paramname"></td><td>)</td>
325 <td class="mlabels-right">
326 <span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
329 </div><div class="memdoc">
331 <p>Reimplemented in <a class="el" href="classxmlpp_1_1RelaxNGValidator.html#a89e380a43658012120255f1bb16b7571">xmlpp::RelaxNGValidator</a>, <a class="el" href="classxmlpp_1_1XsdValidator.html#aacc239ad17640d32246b1661d0ebe055">xmlpp::XsdValidator</a>, <a class="el" href="classxmlpp_1_1SchemaValidator.html#a3f45962652b9e04aa34ca98fd90a6e1f">xmlpp::SchemaValidator</a>, and <a class="el" href="classxmlpp_1_1SchemaValidatorBase.html#a9ef33467f0a566ebf917da7878b89f0d">xmlpp::SchemaValidatorBase</a>.</p>
335 <a class="anchor" id="af59b45514fe397db1dbb025a1a3b103f"></a>
336 <div class="memitem">
337 <div class="memproto">
338 <table class="mlabels">
340 <td class="mlabels-left">
341 <table class="memname">
343 <td class="memname">virtual void xmlpp::Validator::on_validity_error </td>
345 <td class="paramtype">const <a class="elRef" doxygen="glibmm-2.4.tag:http://library.gnome.org/devel/glibmm/unstable/" href="http://library.gnome.org/devel/glibmm/unstable/classGlib_1_1ustring.html">Glib::ustring</a> & </td>
346 <td class="paramname"><em>message</em></td><td>)</td>
351 <td class="mlabels-right">
352 <span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
355 </div><div class="memdoc">
359 <a class="anchor" id="a7ef36a34b258165082c4f33737e743d2"></a>
360 <div class="memitem">
361 <div class="memproto">
362 <table class="mlabels">
364 <td class="mlabels-left">
365 <table class="memname">
367 <td class="memname">virtual void xmlpp::Validator::on_validity_warning </td>
369 <td class="paramtype">const <a class="elRef" doxygen="glibmm-2.4.tag:http://library.gnome.org/devel/glibmm/unstable/" href="http://library.gnome.org/devel/glibmm/unstable/classGlib_1_1ustring.html">Glib::ustring</a> & </td>
370 <td class="paramname"><em>message</em></td><td>)</td>
375 <td class="mlabels-right">
376 <span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
379 </div><div class="memdoc">
383 <a class="anchor" id="a317466ca90b8e53d6f57e49fd032d8cb"></a>
384 <div class="memitem">
385 <div class="memproto">
386 <table class="mlabels">
388 <td class="mlabels-left">
389 <table class="memname">
391 <td class="memname">virtual void xmlpp::Validator::release_underlying </td>
393 <td class="paramname"></td><td>)</td>
398 <td class="mlabels-right">
399 <span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
402 </div><div class="memdoc">
404 <p>Reimplemented in <a class="el" href="classxmlpp_1_1RelaxNGValidator.html#a07e83fc2d5e69ec0e0b4b6833e2c802e">xmlpp::RelaxNGValidator</a>, <a class="el" href="classxmlpp_1_1SchemaValidator.html#a0cd3514902ee1f9ced37e661b633caf6">xmlpp::SchemaValidator</a>, <a class="el" href="classxmlpp_1_1XsdValidator.html#ad1fd16066f28b3685c12412ee94c5f60">xmlpp::XsdValidator</a>, <a class="el" href="classxmlpp_1_1SchemaValidatorBase.html#a3940b83397561cc5b57bd733fc8601f7">xmlpp::SchemaValidatorBase</a>, and <a class="el" href="classxmlpp_1_1DtdValidator.html#a766fb7a278245f3b1673e201135a203e">xmlpp::DtdValidator</a>.</p>
408 <h2 class="groupheader">Member Data Documentation</h2>
409 <a class="anchor" id="a55796f9903e66aa4730313936fab1f0b"></a>
410 <div class="memitem">
411 <div class="memproto">
412 <table class="mlabels">
414 <td class="mlabels-left">
415 <table class="memname">
417 <td class="memname"><a class="el" href="classxmlpp_1_1exception.html">exception</a>* xmlpp::Validator::exception_</td>
421 <td class="mlabels-right">
422 <span class="mlabels"><span class="mlabel">protected</span></span> </td>
425 </div><div class="memdoc">
429 <a class="anchor" id="a1c6ef225bbdf9053a7e83587262f30e9"></a>
430 <div class="memitem">
431 <div class="memproto">
432 <table class="mlabels">
434 <td class="mlabels-left">
435 <table class="memname">
437 <td class="memname">_xmlValidCtxt* xmlpp::Validator::valid_</td>
441 <td class="mlabels-right">
442 <span class="mlabels"><span class="mlabel">protected</span></span> </td>
445 </div><div class="memdoc">
449 <a class="anchor" id="ac28c8c06c9c3cbbebfa0d1c90d20cdf5"></a>
450 <div class="memitem">
451 <div class="memproto">
452 <table class="mlabels">
454 <td class="mlabels-left">
455 <table class="memname">
457 <td class="memname"><a class="elRef" doxygen="glibmm-2.4.tag:http://library.gnome.org/devel/glibmm/unstable/" href="http://library.gnome.org/devel/glibmm/unstable/classGlib_1_1ustring.html">Glib::ustring</a> xmlpp::Validator::validate_error_</td>
461 <td class="mlabels-right">
462 <span class="mlabels"><span class="mlabel">protected</span></span> </td>
465 </div><div class="memdoc">
469 <a class="anchor" id="aa876f0e05457de97a3c2d598e4af2580"></a>
470 <div class="memitem">
471 <div class="memproto">
472 <table class="mlabels">
474 <td class="mlabels-left">
475 <table class="memname">
477 <td class="memname"><a class="elRef" doxygen="glibmm-2.4.tag:http://library.gnome.org/devel/glibmm/unstable/" href="http://library.gnome.org/devel/glibmm/unstable/classGlib_1_1ustring.html">Glib::ustring</a> xmlpp::Validator::validate_warning_</td>
481 <td class="mlabels-right">
482 <span class="mlabels"><span class="mlabel">protected</span></span> </td>
485 </div><div class="memdoc">
489 </div><!-- contents -->
490 <!-- start footer part -->
491 <hr class="footer"/><address class="footer"><small>
492 Generated on Sat Sep 5 2015 21:08:49 for libxml++ by  <a href="http://www.doxygen.org/index.html">
493 <img class="footer" src="doxygen.png" alt="doxygen"/>