summaryrefslogtreecommitdiff
path: root/dviware/dvi2bitmap/doc_libdvi2bitmap/html/InputByteStream_8h_source.html
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /dviware/dvi2bitmap/doc_libdvi2bitmap/html/InputByteStream_8h_source.html
Initial commit
Diffstat (limited to 'dviware/dvi2bitmap/doc_libdvi2bitmap/html/InputByteStream_8h_source.html')
-rw-r--r--dviware/dvi2bitmap/doc_libdvi2bitmap/html/InputByteStream_8h_source.html151
1 files changed, 151 insertions, 0 deletions
diff --git a/dviware/dvi2bitmap/doc_libdvi2bitmap/html/InputByteStream_8h_source.html b/dviware/dvi2bitmap/doc_libdvi2bitmap/html/InputByteStream_8h_source.html
new file mode 100644
index 0000000000..0df562295c
--- /dev/null
+++ b/dviware/dvi2bitmap/doc_libdvi2bitmap/html/InputByteStream_8h_source.html
@@ -0,0 +1,151 @@
+<!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.4"/>
+<title>dvi2bitmap: InputByteStream.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="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">dvi2bitmap
+ &#160;<span id="projectnumber">dvi2bitmap1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">InputByteStream.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="InputByteStream_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* This file is part of dvi2bitmap; see README for copyrights and licence */</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#ifndef INPUT_BYTE_STREAM_HEADER_READ</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define INPUT_BYTE_STREAM_HEADER_READ 1</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="Byte_8h.html">Byte.h</a>&gt;</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="DviError_8h.html">DviError.h</a>&gt;</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="verbosity_8h.html">verbosity.h</a>&gt;</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div>
+<div class="line"><a name="l00012"></a><span class="lineno"><a class="code" href="classInputByteStreamError.html"> 12</a></span>&#160;<span class="keyword">class </span><a class="code" href="classInputByteStreamError.html">InputByteStreamError</a> : <span class="keyword">public</span> <a class="code" href="classDviError.html">DviError</a> {</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00014"></a><span class="lineno"><a class="code" href="classInputByteStreamError.html#a9a61e30999493da22b295321726b7879"> 14</a></span>&#160; <a class="code" href="classInputByteStreamError.html#a9a61e30999493da22b295321726b7879">InputByteStreamError</a>(<span class="keywordtype">string</span> s) : <a class="code" href="classDviError.html">DviError</a>(s) { }</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;};</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="classInputByteStream.html"> 47</a></span>&#160;<span class="keyword">class </span><a class="code" href="classInputByteStream.html" title="Abstracts a file as a stream of bytes. ">InputByteStream</a> {</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classInputByteStream.html#a0216267e37288ad65483a6ebc3cfed7e" title="No-argument constructor creates a new InputByteStream object, but does not associate it with any sour...">InputByteStream</a>(<span class="keywordtype">int</span> fileno)</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">throw</span> (<a class="code" href="classInputByteStreamError.html">InputByteStreamError</a>);</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="classInputByteStream.html#a0216267e37288ad65483a6ebc3cfed7e" title="No-argument constructor creates a new InputByteStream object, but does not associate it with any sour...">InputByteStream</a>(<span class="keywordtype">string</span> srcspec)</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">throw</span> (<a class="code" href="classInputByteStreamError.html">InputByteStreamError</a>);</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classInputByteStream.html#aab7bb65a230ca42b962f3cd57f793474" title="Closes the file and reclaims any buffers. ">~InputByteStream</a>();</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classInputByteStream.html#a16fca7b8f8bc2c56f91f2bce3145839c" title="Indicates whether we are at the end of the file. ">eof</a>();</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classInputByteStream.html#a49494d95c8fb2c018330564ceeec6cc8" title="Closes the stream, releasing all resources. ">close</a>();</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="Byte_8h.html#ae3a497195d617519e5353ea7b417940f">Byte</a> <a class="code" href="classInputByteStream.html#a6c66e2167548d5e3ec8cbe8f9ab90279" title="Reads a byte from the stream. ">getByte</a>(<span class="keywordtype">void</span>)</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">throw</span> (<a class="code" href="classInputByteStreamError.html">InputByteStreamError</a>);</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <a class="code" href="Byte_8h.html#ae3a497195d617519e5353ea7b417940f">Byte</a> *<a class="code" href="classInputByteStream.html#a734737ee1f3ef659837e08f212ef1fb0" title="Retrieves a block from the current position in the stream. ">getBlock</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length)</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">throw</span> (<a class="code" href="classInputByteStreamError.html">InputByteStreamError</a>);</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classInputByteStream.html#ac571d2d3c278d3c9b6f8a840cc2732e3" title="Skips a given number of bytes forward in the stream. ">skip</a> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">throw</span> (<a class="code" href="classInputByteStreamError.html">InputByteStreamError</a>);</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">signed</span> <span class="keywordtype">int</span> <a class="code" href="classInputByteStream.html#a2f9916961a5092897cdb184ceed5b65a" title="Obtains an n-byte unsigned integer from the stream, as a signed int. ">getSIU</a>(<span class="keywordtype">int</span>)</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">throw</span> (<a class="code" href="classInputByteStreamError.html">InputByteStreamError</a>);</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">signed</span> <span class="keywordtype">int</span> <a class="code" href="classInputByteStream.html#afb8cbc5973fb31a37374a082b70570c7" title="Obtains an n-byte signed integer from the stream, as a signed int. ">getSIS</a>(<span class="keywordtype">int</span>)</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">throw</span> (<a class="code" href="classInputByteStreamError.html">InputByteStreamError</a>);</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classInputByteStream.html#a666f2d02dc840957d5830632ba0eeaf5" title="Obtains an n-byte unsigned integer from the stream, as an unsigned int. ">getUIU</a>(<span class="keywordtype">int</span>)</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">throw</span> (<a class="code" href="classInputByteStreamError.html">InputByteStreamError</a>);</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="comment">/*</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * static getUIU reads from an array, rather than the file (ie,</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * it&#39;s really nothing to do with InputByteStream, but it&#39;s here</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> * for consistency.</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classInputByteStream.html#a666f2d02dc840957d5830632ba0eeaf5" title="Obtains an n-byte unsigned integer from the stream, as an unsigned int. ">getUIU</a>(<span class="keywordtype">int</span>, <span class="keyword">const</span> <a class="code" href="Byte_8h.html#ae3a497195d617519e5353ea7b417940f">Byte</a> *)</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">throw</span> (<a class="code" href="classInputByteStreamError.html">InputByteStreamError</a>);</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classInputByteStream.html#aa8f6559507f4e269433f8bd1bf7887ec" title="Sets the default buffer size to be used for reading files. ">setDefaultBufferSize</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);</div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="classInputByteStream.html#a3dec7c5a7e43a63edf30843f7ed63a40"> 83</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classInputByteStream.html#a3dec7c5a7e43a63edf30843f7ed63a40" title="Sets the verbosity of this module. ">verbosity</a> (<span class="keyword">const</span> <a class="code" href="verbosity_8h.html#a886df075e73fd6d54e018791f87fa071" title="Expresses a verbosity level. ">verbosities</a> level) {</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; verbosity_ = level;</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="classInputByteStream.html#a1f294ac769a4aa2869c4907fcf912462"> 89</a></span>&#160; <span class="keyword">static</span> <a class="code" href="verbosity_8h.html#a886df075e73fd6d54e018791f87fa071" title="Expresses a verbosity level. ">verbosities</a> <a class="code" href="classInputByteStream.html#a1f294ac769a4aa2869c4907fcf912462" title="Returns the verbosity setting of this class. ">getVerbosity</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> verbosity_; };</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classInputByteStream.html#a0216267e37288ad65483a6ebc3cfed7e" title="No-argument constructor creates a new InputByteStream object, but does not associate it with any sour...">InputByteStream</a>();</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classInputByteStream.html#a97ae3857b4a60e87f68c030497adaf04" title="Binds this stream to a given file descriptor. ">bindToFileDescriptor</a>(<span class="keywordtype">int</span> fileno,</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">string</span> filename=<span class="stringliteral">&quot;&quot;</span>,</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordtype">int</span> bufsize=0,</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">bool</span> fillBufferAndClose=<span class="keyword">false</span>,</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">bool</span> assertIsSeekable=<span class="keyword">false</span>)</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; throw (<a class="code" href="classInputByteStreamError.html">InputByteStreamError</a>);</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classInputByteStream.html#a42b74214719a29435ce2cb78c604b558" title="Opens a source. ">openSourceSpec</a>(<span class="keywordtype">string</span> srcspec)</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; throw (InputByteStreamError);</div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="code" href="classInputByteStream.html#a0f58cb6d1dc1ab897febadd1ea5a90bc"> 109</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classInputByteStream.html#a0f58cb6d1dc1ab897febadd1ea5a90bc" title="Returns the file descriptor this stream is bound to. ">getFD</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fd_; }</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classInputByteStream.html#af9fdaaedb972b240dff6b5e4be4d9568" title="Seeks to a specific point in the buffer. ">bufferSeek</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos)</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">throw</span> (<a class="code" href="classInputByteStreamError.html">InputByteStreamError</a>);</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classInputByteStream.html#a08566d67c9895845979bcd9e2ff4807f" title="Reloads the buffer, presumably after the file descriptor has been adjusted by an extending class...">reloadBuffer</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordtype">int</span> fd_; <span class="comment">/* file descriptor of handled file/pipe */</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">int</span> mappedfd_; <span class="comment">/* saved file descriptor of mapped file */</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">string</span> fname_; <span class="comment">/* name of file, or string rep&#39;n of fd */</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="Byte_8h.html#ae3a497195d617519e5353ea7b417940f">Byte</a> *buf_; <span class="comment">/* buffer */</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordtype">size_t</span> buflen_; <span class="comment">/* size of buffer */</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="Byte_8h.html#ae3a497195d617519e5353ea7b417940f">Byte</a> *p_; <span class="comment">/* current position in buffer */</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="Byte_8h.html#ae3a497195d617519e5353ea7b417940f">Byte</a> *eob_; <span class="comment">/* end of buffer */</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordtype">bool</span> eof_; <span class="comment">/* true on end of file (note this is from</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> the client&#39;s point of view, not the class&#39;s:</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> if we have `preloaded&#39; a file, the</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> underlying file will be closed, but there</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> will still be more to read from the </span></div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"> stream) */</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">void</span> read_buf_(<span class="keywordtype">void</span>)</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; throw (<a class="code" href="classInputByteStreamError.html">InputByteStreamError</a>);</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">size_t</span> certainly_read_(<span class="keywordtype">int</span> fd, <a class="code" href="Byte_8h.html#ae3a497195d617519e5353ea7b417940f">Byte</a> *b, <span class="keywordtype">size_t</span> len)</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; throw (InputByteStreamError);</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; static <a class="code" href="verbosity_8h.html#a886df075e73fd6d54e018791f87fa071" title="Expresses a verbosity level. ">verbosities</a> verbosity_;</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; static <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> default_buffer_length_;</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;};</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* INPUT_BYTE_STREAM_HEADER_READ */</span><span class="preprocessor"></span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Jan 12 2015 16:13:22 for dvi2bitmap by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.4
+</small></address>
+</body>
+</html>