|
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"> |
|
3 <head> |
|
4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> |
|
5 <title>TB9.2 Example Applications: CThreadEngine Class Reference</title> |
|
6 <link href="tabs.css" rel="stylesheet" type="text/css"/> |
|
7 <link href="doxygen.css" rel="stylesheet" type="text/css"/> |
|
8 </head> |
|
9 <body> |
|
10 <!-- Generated by Doxygen 1.6.2 --> |
|
11 <div class="contents"> |
|
12 <h1>CThreadEngine Class Reference</h1><!-- doxytag: class="CThreadEngine" --> |
|
13 <p><a href="class_c_thread_engine-members.html">List of all members.</a></p> |
|
14 <table border="0" cellpadding="0" cellspacing="0"> |
|
15 <tr><td colspan="2"><h2>Public Member Functions</h2></td></tr> |
|
16 <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_engine.html#a78c4edde0ad6368f8901dd20170ac889">~CThreadEngine</a> (void)</td></tr> |
|
17 <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_engine.html#a48334d697168092a5e7be817e45fd176">DoCancel</a> ()</td></tr> |
|
18 <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_engine.html#aec36044be34b754c06dc98a9c2836fdb">RunL</a> ()</td></tr> |
|
19 <tr><td class="memItemLeft" align="right" valign="top">TInt </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_engine.html#a7768311c64d094ac44485243026b6e46">RunError</a> (TInt aError)</td></tr> |
|
20 <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_engine.html#a0bfcabc0c045354d389f61d355ca0490">StartL</a> ()</td></tr> |
|
21 <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_engine.html#ad53a8e971af48dd561844863a5ff3888">CreateThreadsL</a> ()</td></tr> |
|
22 <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_engine.html#a222c982a5bc397dfa3fd17ea37ce4dda">KillThread</a> (TInt aThreadCount)</td></tr> |
|
23 <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_engine.html#af3982a90e967a486bde825f5aa2ddc55">SetSyncValue</a> (TInt aValue)</td></tr> |
|
24 <tr><td class="memItemLeft" align="right" valign="top">TInt </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_engine.html#a7f6b1665b605dcf900473bce9a9191b9">GetSyncValue</a> () const </td></tr> |
|
25 <tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr> |
|
26 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="class_c_thread_engine.html">CThreadEngine</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_engine.html#af36e9899e337766ff0bd7ee9c5080f60">NewL</a> (<a class="el" href="class_c_thread_app_view.html">CThreadAppView</a> *aView)</td></tr> |
|
27 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="class_c_thread_engine.html">CThreadEngine</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_engine.html#a311d84662a41a7a2221b8d049eb3d525">NewLC</a> (<a class="el" href="class_c_thread_app_view.html">CThreadAppView</a> *aView)</td></tr> |
|
28 <tr><td class="memItemLeft" align="right" valign="top">static TInt </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_engine.html#ab8dd5de1ec65da63b17fc87dd402f07b">ExecuteThreadOne</a> (TAny *aPtr)</td></tr> |
|
29 <tr><td class="memItemLeft" align="right" valign="top">static TInt </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_engine.html#ad2122547b95714aa7dea18f28e77ca14">ExecuteThreadTwo</a> (TAny *aPtr)</td></tr> |
|
30 <tr><td class="memItemLeft" align="right" valign="top">static TInt </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_engine.html#a12d8af3f0da569111fe99ebb4101f7b4">ExecuteThreadThree</a> (TAny *aPtr)</td></tr> |
|
31 <tr><td colspan="2"><h2>Public Attributes</h2></td></tr> |
|
32 <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab904aa44139219b15fd735aa05a2cb6e"></a><!-- doxytag: member="CThreadEngine::iMutex" ref="ab904aa44139219b15fd735aa05a2cb6e" args="" --> |
|
33 RMutex </td><td class="memItemRight" valign="bottom"><b>iMutex</b></td></tr> |
|
34 </table> |
|
35 <hr/><a name="_details"></a><h2>Detailed Description</h2> |
|
36 <p><a class="el" href="class_c_thread_engine.html">CThreadEngine</a> application engine class. </p> |
|
37 |
|
38 <p>Definition at line <a class="el" href="threadengine_8h_source.html#l00026">26</a> of file <a class="el" href="threadengine_8h_source.html">threadengine.h</a>.</p> |
|
39 <hr/><h2>Constructor & Destructor Documentation</h2> |
|
40 <a class="anchor" id="a78c4edde0ad6368f8901dd20170ac889"></a><!-- doxytag: member="CThreadEngine::~CThreadEngine" ref="a78c4edde0ad6368f8901dd20170ac889" args="(void)" --> |
|
41 <div class="memitem"> |
|
42 <div class="memproto"> |
|
43 <table class="memname"> |
|
44 <tr> |
|
45 <td class="memname">CThreadEngine::~CThreadEngine </td> |
|
46 <td>(</td> |
|
47 <td class="paramtype">void </td> |
|
48 <td class="paramname"></td> |
|
49 <td> ) </td> |
|
50 <td></td> |
|
51 </tr> |
|
52 </table> |
|
53 </div> |
|
54 <div class="memdoc"> |
|
55 <p>Destructor </p> |
|
56 |
|
57 <p>Definition at line <a class="el" href="threadengine_8cpp_source.html#l00042">42</a> of file <a class="el" href="threadengine_8cpp_source.html">threadengine.cpp</a>.</p> |
|
58 |
|
59 </div> |
|
60 </div> |
|
61 <hr/><h2>Member Function Documentation</h2> |
|
62 <a class="anchor" id="af36e9899e337766ff0bd7ee9c5080f60"></a><!-- doxytag: member="CThreadEngine::NewL" ref="af36e9899e337766ff0bd7ee9c5080f60" args="(CThreadAppView *aView)" --> |
|
63 <div class="memitem"> |
|
64 <div class="memproto"> |
|
65 <table class="memname"> |
|
66 <tr> |
|
67 <td class="memname"><a class="el" href="class_c_thread_engine.html">CThreadEngine</a> * CThreadEngine::NewL </td> |
|
68 <td>(</td> |
|
69 <td class="paramtype"><a class="el" href="class_c_thread_app_view.html">CThreadAppView</a> * </td> |
|
70 <td class="paramname"> <em>aView</em></td> |
|
71 <td> ) </td> |
|
72 <td><code> [static]</code></td> |
|
73 </tr> |
|
74 </table> |
|
75 </div> |
|
76 <div class="memdoc"> |
|
77 <p><a class="el" href="class_c_thread_engine.html#af36e9899e337766ff0bd7ee9c5080f60">NewL()</a></p> |
|
78 <p>Create new <a class="el" href="class_c_thread_engine.html">CThreadEngine</a> object return a pointer to the created instance of <a class="el" href="class_c_thread_engine.html">CThreadEngine</a> </p> |
|
79 <dl><dt><b>Parameters:</b></dt><dd> |
|
80 <table border="0" cellspacing="2" cellpadding="0"> |
|
81 <tr><td valign="top"></td><td valign="top"><em>aView</em> </td><td>a Pointer to <a class="el" href="class_c_thread_app_view.html">CThreadAppView</a>. </td></tr> |
|
82 </table> |
|
83 </dd> |
|
84 </dl> |
|
85 |
|
86 <p>Definition at line <a class="el" href="threadengine_8cpp_source.html#l00056">56</a> of file <a class="el" href="threadengine_8cpp_source.html">threadengine.cpp</a>.</p> |
|
87 |
|
88 </div> |
|
89 </div> |
|
90 <a class="anchor" id="a311d84662a41a7a2221b8d049eb3d525"></a><!-- doxytag: member="CThreadEngine::NewLC" ref="a311d84662a41a7a2221b8d049eb3d525" args="(CThreadAppView *aView)" --> |
|
91 <div class="memitem"> |
|
92 <div class="memproto"> |
|
93 <table class="memname"> |
|
94 <tr> |
|
95 <td class="memname"><a class="el" href="class_c_thread_engine.html">CThreadEngine</a> * CThreadEngine::NewLC </td> |
|
96 <td>(</td> |
|
97 <td class="paramtype"><a class="el" href="class_c_thread_app_view.html">CThreadAppView</a> * </td> |
|
98 <td class="paramname"> <em>aView</em></td> |
|
99 <td> ) </td> |
|
100 <td><code> [static]</code></td> |
|
101 </tr> |
|
102 </table> |
|
103 </div> |
|
104 <div class="memdoc"> |
|
105 <p><a class="el" href="class_c_thread_engine.html#a311d84662a41a7a2221b8d049eb3d525">NewLC()</a> </p> |
|
106 |
|
107 <p>Definition at line <a class="el" href="threadengine_8cpp_source.html#l00063">63</a> of file <a class="el" href="threadengine_8cpp_source.html">threadengine.cpp</a>.</p> |
|
108 |
|
109 </div> |
|
110 </div> |
|
111 <a class="anchor" id="a48334d697168092a5e7be817e45fd176"></a><!-- doxytag: member="CThreadEngine::DoCancel" ref="a48334d697168092a5e7be817e45fd176" args="()" --> |
|
112 <div class="memitem"> |
|
113 <div class="memproto"> |
|
114 <table class="memname"> |
|
115 <tr> |
|
116 <td class="memname">void CThreadEngine::DoCancel </td> |
|
117 <td>(</td> |
|
118 <td class="paramname"></td> |
|
119 <td> ) </td> |
|
120 <td></td> |
|
121 </tr> |
|
122 </table> |
|
123 </div> |
|
124 <div class="memdoc"> |
|
125 <p>DoCancelL()</p> |
|
126 <p>Cancels the timer. </p> |
|
127 |
|
128 <p>Definition at line <a class="el" href="threadengine_8cpp_source.html#l00197">197</a> of file <a class="el" href="threadengine_8cpp_source.html">threadengine.cpp</a>.</p> |
|
129 |
|
130 </div> |
|
131 </div> |
|
132 <a class="anchor" id="aec36044be34b754c06dc98a9c2836fdb"></a><!-- doxytag: member="CThreadEngine::RunL" ref="aec36044be34b754c06dc98a9c2836fdb" args="()" --> |
|
133 <div class="memitem"> |
|
134 <div class="memproto"> |
|
135 <table class="memname"> |
|
136 <tr> |
|
137 <td class="memname">void CThreadEngine::RunL </td> |
|
138 <td>(</td> |
|
139 <td class="paramname"></td> |
|
140 <td> ) </td> |
|
141 <td></td> |
|
142 </tr> |
|
143 </table> |
|
144 </div> |
|
145 <div class="memdoc"> |
|
146 <p><a class="el" href="class_c_thread_engine.html#aec36044be34b754c06dc98a9c2836fdb">RunL()</a></p> |
|
147 <p>Implementation of the timer's virtual method. Check that all threads are alive and running, if not then restart them. </p> |
|
148 |
|
149 <p>Definition at line <a class="el" href="threadengine_8cpp_source.html#l00103">103</a> of file <a class="el" href="threadengine_8cpp_source.html">threadengine.cpp</a>.</p> |
|
150 |
|
151 </div> |
|
152 </div> |
|
153 <a class="anchor" id="a7768311c64d094ac44485243026b6e46"></a><!-- doxytag: member="CThreadEngine::RunError" ref="a7768311c64d094ac44485243026b6e46" args="(TInt aError)" --> |
|
154 <div class="memitem"> |
|
155 <div class="memproto"> |
|
156 <table class="memname"> |
|
157 <tr> |
|
158 <td class="memname">TInt CThreadEngine::RunError </td> |
|
159 <td>(</td> |
|
160 <td class="paramtype">TInt </td> |
|
161 <td class="paramname"> <em>aError</em></td> |
|
162 <td> ) </td> |
|
163 <td></td> |
|
164 </tr> |
|
165 </table> |
|
166 </div> |
|
167 <div class="memdoc"> |
|
168 <p><a class="el" href="class_c_thread_engine.html#a7768311c64d094ac44485243026b6e46">RunError()</a></p> |
|
169 <p>Handles a leave occurring in the request completion event handler <a class="el" href="class_c_thread_engine.html#aec36044be34b754c06dc98a9c2836fdb">RunL()</a>. return returns always KErrNone </p> |
|
170 |
|
171 <p>Definition at line <a class="el" href="threadengine_8cpp_source.html#l00207">207</a> of file <a class="el" href="threadengine_8cpp_source.html">threadengine.cpp</a>.</p> |
|
172 |
|
173 </div> |
|
174 </div> |
|
175 <a class="anchor" id="a0bfcabc0c045354d389f61d355ca0490"></a><!-- doxytag: member="CThreadEngine::StartL" ref="a0bfcabc0c045354d389f61d355ca0490" args="()" --> |
|
176 <div class="memitem"> |
|
177 <div class="memproto"> |
|
178 <table class="memname"> |
|
179 <tr> |
|
180 <td class="memname">void CThreadEngine::StartL </td> |
|
181 <td>(</td> |
|
182 <td class="paramname"></td> |
|
183 <td> ) </td> |
|
184 <td></td> |
|
185 </tr> |
|
186 </table> |
|
187 </div> |
|
188 <div class="memdoc"> |
|
189 <p><a class="el" href="class_c_thread_engine.html#a0bfcabc0c045354d389f61d355ca0490">StartL()</a></p> |
|
190 <p>CreateThreads and start the timer after delay. </p> |
|
191 |
|
192 <p>Definition at line <a class="el" href="threadengine_8cpp_source.html#l00085">85</a> of file <a class="el" href="threadengine_8cpp_source.html">threadengine.cpp</a>.</p> |
|
193 |
|
194 </div> |
|
195 </div> |
|
196 <a class="anchor" id="ad53a8e971af48dd561844863a5ff3888"></a><!-- doxytag: member="CThreadEngine::CreateThreadsL" ref="ad53a8e971af48dd561844863a5ff3888" args="()" --> |
|
197 <div class="memitem"> |
|
198 <div class="memproto"> |
|
199 <table class="memname"> |
|
200 <tr> |
|
201 <td class="memname">void CThreadEngine::CreateThreadsL </td> |
|
202 <td>(</td> |
|
203 <td class="paramname"></td> |
|
204 <td> ) </td> |
|
205 <td></td> |
|
206 </tr> |
|
207 </table> |
|
208 </div> |
|
209 <div class="memdoc"> |
|
210 <p><a class="el" href="class_c_thread_engine.html#ad53a8e971af48dd561844863a5ff3888">CreateThreadsL()</a></p> |
|
211 <p>Initialize 3 threads and start them. </p> |
|
212 |
|
213 <p>Definition at line <a class="el" href="threadengine_8cpp_source.html#l00386">386</a> of file <a class="el" href="threadengine_8cpp_source.html">threadengine.cpp</a>.</p> |
|
214 |
|
215 </div> |
|
216 </div> |
|
217 <a class="anchor" id="ab8dd5de1ec65da63b17fc87dd402f07b"></a><!-- doxytag: member="CThreadEngine::ExecuteThreadOne" ref="ab8dd5de1ec65da63b17fc87dd402f07b" args="(TAny *aPtr)" --> |
|
218 <div class="memitem"> |
|
219 <div class="memproto"> |
|
220 <table class="memname"> |
|
221 <tr> |
|
222 <td class="memname">TInt CThreadEngine::ExecuteThreadOne </td> |
|
223 <td>(</td> |
|
224 <td class="paramtype">TAny * </td> |
|
225 <td class="paramname"> <em>aPtr</em></td> |
|
226 <td> ) </td> |
|
227 <td><code> [static]</code></td> |
|
228 </tr> |
|
229 </table> |
|
230 </div> |
|
231 <div class="memdoc"> |
|
232 <p><a class="el" href="class_c_thread_engine.html#ab8dd5de1ec65da63b17fc87dd402f07b">ExecuteThreadOne()</a>;</p> |
|
233 <p>Function for thread one. Thread one executes this function while it's running. param aPtr pointer to a resource. </p> |
|
234 |
|
235 <p>Definition at line <a class="el" href="threadengine_8cpp_source.html#l00293">293</a> of file <a class="el" href="threadengine_8cpp_source.html">threadengine.cpp</a>.</p> |
|
236 |
|
237 </div> |
|
238 </div> |
|
239 <a class="anchor" id="ad2122547b95714aa7dea18f28e77ca14"></a><!-- doxytag: member="CThreadEngine::ExecuteThreadTwo" ref="ad2122547b95714aa7dea18f28e77ca14" args="(TAny *aPtr)" --> |
|
240 <div class="memitem"> |
|
241 <div class="memproto"> |
|
242 <table class="memname"> |
|
243 <tr> |
|
244 <td class="memname">TInt CThreadEngine::ExecuteThreadTwo </td> |
|
245 <td>(</td> |
|
246 <td class="paramtype">TAny * </td> |
|
247 <td class="paramname"> <em>aPtr</em></td> |
|
248 <td> ) </td> |
|
249 <td><code> [static]</code></td> |
|
250 </tr> |
|
251 </table> |
|
252 </div> |
|
253 <div class="memdoc"> |
|
254 <p><a class="el" href="class_c_thread_engine.html#ad2122547b95714aa7dea18f28e77ca14">ExecuteThreadTwo()</a></p> |
|
255 <p>Function for thread two. Thread two executes this function while it's running. param aPtr pointer to a resource. </p> |
|
256 |
|
257 <p>Definition at line <a class="el" href="threadengine_8cpp_source.html#l00316">316</a> of file <a class="el" href="threadengine_8cpp_source.html">threadengine.cpp</a>.</p> |
|
258 |
|
259 </div> |
|
260 </div> |
|
261 <a class="anchor" id="a12d8af3f0da569111fe99ebb4101f7b4"></a><!-- doxytag: member="CThreadEngine::ExecuteThreadThree" ref="a12d8af3f0da569111fe99ebb4101f7b4" args="(TAny *aPtr)" --> |
|
262 <div class="memitem"> |
|
263 <div class="memproto"> |
|
264 <table class="memname"> |
|
265 <tr> |
|
266 <td class="memname">TInt CThreadEngine::ExecuteThreadThree </td> |
|
267 <td>(</td> |
|
268 <td class="paramtype">TAny * </td> |
|
269 <td class="paramname"> <em>aPtr</em></td> |
|
270 <td> ) </td> |
|
271 <td><code> [static]</code></td> |
|
272 </tr> |
|
273 </table> |
|
274 </div> |
|
275 <div class="memdoc"> |
|
276 <p><a class="el" href="class_c_thread_engine.html#a12d8af3f0da569111fe99ebb4101f7b4">ExecuteThreadThree()</a></p> |
|
277 <p>Function for thread three. Thread three executes this function while it's running. param aPtr pointer to a resource. </p> |
|
278 |
|
279 <p>Definition at line <a class="el" href="threadengine_8cpp_source.html#l00339">339</a> of file <a class="el" href="threadengine_8cpp_source.html">threadengine.cpp</a>.</p> |
|
280 |
|
281 </div> |
|
282 </div> |
|
283 <a class="anchor" id="a222c982a5bc397dfa3fd17ea37ce4dda"></a><!-- doxytag: member="CThreadEngine::KillThread" ref="a222c982a5bc397dfa3fd17ea37ce4dda" args="(TInt aThreadCount)" --> |
|
284 <div class="memitem"> |
|
285 <div class="memproto"> |
|
286 <table class="memname"> |
|
287 <tr> |
|
288 <td class="memname">void CThreadEngine::KillThread </td> |
|
289 <td>(</td> |
|
290 <td class="paramtype">TInt </td> |
|
291 <td class="paramname"> <em>aThreadCount</em></td> |
|
292 <td> ) </td> |
|
293 <td></td> |
|
294 </tr> |
|
295 </table> |
|
296 </div> |
|
297 <div class="memdoc"> |
|
298 <p><a class="el" href="class_c_thread_engine.html#a222c982a5bc397dfa3fd17ea37ce4dda">KillThread()</a></p> |
|
299 <p>Kill one of the threads. CreateThreadsL must have been called before this. param aThreadCount the number of the thread that should be killed (1-3). </p> |
|
300 |
|
301 <p>Definition at line <a class="el" href="threadengine_8cpp_source.html#l00235">235</a> of file <a class="el" href="threadengine_8cpp_source.html">threadengine.cpp</a>.</p> |
|
302 |
|
303 </div> |
|
304 </div> |
|
305 <a class="anchor" id="af3982a90e967a486bde825f5aa2ddc55"></a><!-- doxytag: member="CThreadEngine::SetSyncValue" ref="af3982a90e967a486bde825f5aa2ddc55" args="(TInt aValue)" --> |
|
306 <div class="memitem"> |
|
307 <div class="memproto"> |
|
308 <table class="memname"> |
|
309 <tr> |
|
310 <td class="memname">void CThreadEngine::SetSyncValue </td> |
|
311 <td>(</td> |
|
312 <td class="paramtype">TInt </td> |
|
313 <td class="paramname"> <em>aValue</em></td> |
|
314 <td> ) </td> |
|
315 <td></td> |
|
316 </tr> |
|
317 </table> |
|
318 </div> |
|
319 <div class="memdoc"> |
|
320 <p><a class="el" href="class_c_thread_engine.html#af3982a90e967a486bde825f5aa2ddc55">SetSyncValue()</a></p> |
|
321 <p>This is a thread-safe function. Set synchronized variable. param aValue Value of the variable. </p> |
|
322 |
|
323 <p>Definition at line <a class="el" href="threadengine_8cpp_source.html#l00362">362</a> of file <a class="el" href="threadengine_8cpp_source.html">threadengine.cpp</a>.</p> |
|
324 |
|
325 </div> |
|
326 </div> |
|
327 <a class="anchor" id="a7f6b1665b605dcf900473bce9a9191b9"></a><!-- doxytag: member="CThreadEngine::GetSyncValue" ref="a7f6b1665b605dcf900473bce9a9191b9" args="() const " --> |
|
328 <div class="memitem"> |
|
329 <div class="memproto"> |
|
330 <table class="memname"> |
|
331 <tr> |
|
332 <td class="memname">TInt CThreadEngine::GetSyncValue </td> |
|
333 <td>(</td> |
|
334 <td class="paramname"></td> |
|
335 <td> ) </td> |
|
336 <td> const</td> |
|
337 </tr> |
|
338 </table> |
|
339 </div> |
|
340 <div class="memdoc"> |
|
341 <p><a class="el" href="class_c_thread_engine.html#a7f6b1665b605dcf900473bce9a9191b9">GetSyncValue()</a></p> |
|
342 <p>This is a thread-safe function. return value of the synchronized variable. </p> |
|
343 |
|
344 <p>Definition at line <a class="el" href="threadengine_8cpp_source.html#l00375">375</a> of file <a class="el" href="threadengine_8cpp_source.html">threadengine.cpp</a>.</p> |
|
345 |
|
346 </div> |
|
347 </div> |
|
348 </div> |
|
349 <hr size="1"/><address style="text-align: right;"><small>Generated by |
|
350 <a href="http://www.doxygen.org/index.html"> |
|
351 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2 </small></address> |
|
352 </body> |
|
353 </html> |