1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>Castle Game Engine: CastleTimeUtils</title>
<meta name="generator" content="PasDoc 0.13.0">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
</head>
<body>
<table class="container"><tr><td class="navigation">
<h2>Castle Game Engine</h2><p><a href="introduction.html" class="navigation">Introduction</a></p><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
<h1 class="unit">Unit CastleTimeUtils</h1>
<table class="sections wide_list">
<tr>
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Uses">Uses</a></td><td><a class="section" href="#PasDoc-Classes">Classes, Interfaces, Objects and Records</a></td><td><a class="section" href="#PasDoc-FuncsProcs">Functions and Procedures</a></td><td><a class="section" href="#PasDoc-Types">Types</a></td><td><a class="section" href="#PasDoc-Constants">Constants</a></td><td>Variables</td></tr></table>
<a name="PasDoc-Description"></a><h2 class="description">Description</h2>
<p>
Time utilities.</p>
<a name="PasDoc-Uses"></a><h2 class="uses">Uses</h2>
<ul class="useslist"><li>BaseUnix</li><li>Unix</li><li>Dl</li><li>SysUtils</li><li>Math</li></ul><h2 class="overview">Overview</h2>
<a name="PasDoc-Classes"></a><h3 class="cio">Classes, Interfaces, Objects and Records</h3>
<table class="classestable wide_list">
<tr class="listheader">
<th class="itemname">Name</th>
<th class="itemdesc">Description</th>
</tr>
<tr class="list">
<td class="itemname">Class <a class="bold" href="CastleTimeUtils.TFramesPerSecond.html"><code>TFramesPerSecond</code></a></td>
<td class="itemdesc">Utility to measure frames per second, independent of actual rendering API.</td>
</tr>
</table>
<a name="PasDoc-FuncsProcs"></a><h3 class="summary">Functions and Procedures</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code>function <b><a href="CastleTimeUtils.html#TimeTickSecondLater">TimeTickSecondLater</a></b>(firstTime, secondTime, timeDelay: <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>): boolean;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code>function <b><a href="CastleTimeUtils.html#TimeTickDiff">TimeTickDiff</a></b>(firstTime, secondTime: <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>): <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code>function <b><a href="CastleTimeUtils.html#MilisecTimesAdd">MilisecTimesAdd</a></b>(t1, t2: <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>): <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code>function <b><a href="CastleTimeUtils.html#MilisecTimesSubtract">MilisecTimesSubtract</a></b>(t1, t2: <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>): <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code>function <b><a href="CastleTimeUtils.html#GetTickCount">GetTickCount</a></b>: <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code>function <b><a href="CastleTimeUtils.html#DateTimeToAtStr">DateTimeToAtStr</a></b>(DateTime: TDateTime): string;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code>function <b><a href="CastleTimeUtils.html#ProcessTimerNow">ProcessTimerNow</a></b>: <a href="CastleTimeUtils.html#TProcessTimerResult">TProcessTimerResult</a>;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code>function <b><a href="CastleTimeUtils.html#ProcessTimerDiff">ProcessTimerDiff</a></b>(a, b: <a href="CastleTimeUtils.html#TProcessTimerResult">TProcessTimerResult</a>): <a href="CastleTimeUtils.html#TProcessTimerResult">TProcessTimerResult</a>;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code>function <b><a href="CastleTimeUtils.html#ProcessTimerSeconds">ProcessTimerSeconds</a></b>(const a, b: <a href="CastleTimeUtils.html#TProcessTimerResult">TProcessTimerResult</a>): <a href="CastleTimeUtils.html#TFloatTime">TFloatTime</a>;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code>procedure <b><a href="CastleTimeUtils.html#ProcessTimerBegin">ProcessTimerBegin</a></b>;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code>function <b><a href="CastleTimeUtils.html#ProcessTimerEnd">ProcessTimerEnd</a></b>: Double;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code>function <b><a href="CastleTimeUtils.html#Timer">Timer</a></b>: <a href="CastleTimeUtils.html#TTimerResult">TTimerResult</a>;</code></td>
</tr>
</table>
<a name="PasDoc-Types"></a><h3 class="summary">Types</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code><b><a href="CastleTimeUtils.html#TFloatTime">TFloatTime</a></b> = Double;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a></b> = LongWord;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code><b><a href="CastleTimeUtils.html#TProcessTimerResult">TProcessTimerResult</a></b> =
clock_t
;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a href="CastleTimeUtils.html#TTimerResult">TTimerResult</a></b> = Int64;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code><b><a href="CastleTimeUtils.html#TTimerFrequency">TTimerFrequency</a></b> = LongWord;</code></td>
</tr>
</table>
<a name="PasDoc-Constants"></a><h3 class="summary">Constants</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code><b><a href="CastleTimeUtils.html#OldestTime">OldestTime</a></b> = -MaxDouble;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a href="CastleTimeUtils.html#MinDateTime">MinDateTime</a></b>: TDateTime = MinDouble;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code><b><a href="CastleTimeUtils.html#ProcessTimersPerSec">ProcessTimersPerSec</a></b>
=
128
;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a href="CastleTimeUtils.html#TimerFrequency">TimerFrequency</a></b>: <a href="CastleTimeUtils.html#TTimerFrequency">TTimerFrequency</a> = 1000000;</code></td>
</tr>
</table>
<h2 class="description">Description</h2>
<h3 class="detail">Functions and Procedures</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TimeTickSecondLater"></a><code>function <b>TimeTickSecondLater</b>(firstTime, secondTime, timeDelay: <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>): boolean;</code></td>
</tr>
<tr><td colspan="1">
<p>
Check is SecondTime larger by at least TimeDelay than FirstTime.
<p>Naive implementation of this would be <code>SecondTime - FirstTime >= TimeDelay</code>.
<p>FirstTime and SecondTime are milisecond times from some initial point. For example, they may be taken from a function like <a class="normal" href="CastleTimeUtils.html#GetTickCount">GetTickCount</a>. Such time may "wrap" (<a class="normal" href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>, just a LongWord, is limited). This function checks these times intelligently, using the assumption that the SecondTime is always "later" than the FirstTime, and only having to check if it's later by at least TimeDelay.
<p>Always TimeTickSecond(X, X, 0) = <code>True</code>. that is, when both times are actually equal, it's correctly "later by zero miliseconds".</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TimeTickDiff"></a><code>function <b>TimeTickDiff</b>(firstTime, secondTime: <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>): <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>;</code></td>
</tr>
<tr><td colspan="1">
<p>
Difference in times between SecondTime and FirstTime.
<p>Naive implementation would be just <code>SecondTime - FirstTime</code>, this function does a little better: takes into account that times may "wrap" (see <a class="normal" href="CastleTimeUtils.html#TimeTickSecondLater">TimeTickSecondLater</a>), and uses the assumption that the SecondTime for sure "later", to calculate hopefully correct difference.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="MilisecTimesAdd"></a><code>function <b>MilisecTimesAdd</b>(t1, t2: <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>): <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>;</code></td>
</tr>
<tr><td colspan="1">
<p>
Simply add and subtract two <a class="normal" href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a> values.
<p>These don't care if <a class="normal" href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a> is a point in time, or time interval. They simply add / subtract values. It's your problem if adding / subtracting them is sensible.
<p>Range checking is ignored. In particular, this means that if you subtract smaller value from larger value, the result will be like the time "wrapped" in between (since <a class="normal" href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a> range is limited).
<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="MilisecTimesSubtract"></a><code>function <b>MilisecTimesSubtract</b>(t1, t2: <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>): <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>;</code></td>
</tr>
<tr><td colspan="1">
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="GetTickCount"></a><code>function <b>GetTickCount</b>: <a href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>;</code></td>
</tr>
<tr><td colspan="1">
<p>
Get current time, in miliseconds. Such time wraps after ˜49 days.
<p>Under Windows, this is just a WinAPI <code>GetTickCount</code> call, it's a time since system start.
<p>Under Unix, similar result is obtained by gettimeofday call, and cutting off some digits. So under Unix it's not a time since system start, but since some arbitrary point.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="DateTimeToAtStr"></a><code>function <b>DateTimeToAtStr</b>(DateTime: TDateTime): string;</code></td>
</tr>
<tr><td colspan="1">
<p>
Convert DateTime to string in the form "date at time".</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="ProcessTimerNow"></a><code>function <b>ProcessTimerNow</b>: <a href="CastleTimeUtils.html#TProcessTimerResult">TProcessTimerResult</a>;</code></td>
</tr>
<tr><td colspan="1">
<p>
Current value of process (CPU) timer. This can be used to measure how much CPU time your process used. Although note that on Windows there's no way to measure CPU time, so this simply measures real time that passed. Only under Unix this uses clock() call designed to actually measure CPU time.
<p>You take two <code>ProcessTimerNow</code> values, subtract them with <a class="normal" href="CastleTimeUtils.html#ProcessTimerDiff">ProcessTimerDiff</a>, this is the time passed — in resolution <a class="normal" href="CastleTimeUtils.html#ProcessTimersPerSec">ProcessTimersPerSec</a>.
<p>For simple usage, see <a class="normal" href="CastleTimeUtils.html#ProcessTimerBegin">ProcessTimerBegin</a> and <a class="normal" href="CastleTimeUtils.html#ProcessTimerEnd">ProcessTimerEnd</a>.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="ProcessTimerDiff"></a><code>function <b>ProcessTimerDiff</b>(a, b: <a href="CastleTimeUtils.html#TProcessTimerResult">TProcessTimerResult</a>): <a href="CastleTimeUtils.html#TProcessTimerResult">TProcessTimerResult</a>;</code></td>
</tr>
<tr><td colspan="1">
<p>
Subtract two process (CPU) timer results, obtained from <a class="normal" href="CastleTimeUtils.html#ProcessTimerNow">ProcessTimerNow</a>.
<p>Although it may just subtract two values, it may also do something more. For example, if timer resolution is only miliseconds, and it may wrap (just like <a class="normal" href="CastleTimeUtils.html#TMilisecTime">TMilisecTime</a>), then we may subtract values intelligently, taking into account that time could wrap (see <a class="normal" href="CastleTimeUtils.html#TimeTickDiff">TimeTickDiff</a>).</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="ProcessTimerSeconds"></a><code>function <b>ProcessTimerSeconds</b>(const a, b: <a href="CastleTimeUtils.html#TProcessTimerResult">TProcessTimerResult</a>): <a href="CastleTimeUtils.html#TFloatTime">TFloatTime</a>;</code></td>
</tr>
<tr><td colspan="1">
<p>
Subtract two timer values, result is in seconds.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="ProcessTimerBegin"></a><code>procedure <b>ProcessTimerBegin</b>;</code></td>
</tr>
<tr><td colspan="1">
<p>
Simple measure of process CPU time. Call <code>ProcessTimerBegin</code> at the beginning of your calculation, call <a class="normal" href="CastleTimeUtils.html#ProcessTimerEnd">ProcessTimerEnd</a> at the end. <a class="normal" href="CastleTimeUtils.html#ProcessTimerEnd">ProcessTimerEnd</a> returns a float number, with 1.0 being one second.
<p>Note that using this is unsafe in libraries, not to mention multi-threaded programs (it's not "reentrant") — you risk that some other code called <code>ProcessTimerBegin</code>, and your <a class="normal" href="CastleTimeUtils.html#ProcessTimerEnd">ProcessTimerEnd</a> doesn't measure what you think. So in general units, do not use this, use <a class="normal" href="CastleTimeUtils.html#ProcessTimerNow">ProcessTimerNow</a> and <a class="normal" href="CastleTimeUtils.html#ProcessTimerDiff">ProcessTimerDiff</a> instead. In final programs (when you have full control) using these is comfortable and Ok.
<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="ProcessTimerEnd"></a><code>function <b>ProcessTimerEnd</b>: Double;</code></td>
</tr>
<tr><td colspan="1">
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="Timer"></a><code>function <b>Timer</b>: <a href="CastleTimeUtils.html#TTimerResult">TTimerResult</a>;</code></td>
</tr>
<tr><td colspan="1">
<p>
Measure passed real time. Note "real time" — as opposed to e.g. process time (for this, see <a class="normal" href="CastleTimeUtils.html#ProcessTimerNow">ProcessTimerNow</a> and friends above). Call Timer twice, calculate the difference, and you get time passed — with frequency in <a class="normal" href="CastleTimeUtils.html#TimerFrequency">TimerFrequency</a>.
<p><a class="normal" href="CastleTimeUtils.html#TimerFrequency">TimerFrequency</a> says how much Timer gets larger during 1 second (how many "ticks" are during one second).
<p>Implementation details: Under Unix this uses gettimeofday. Under Windows this uses QueryPerformanceCounter/Frequency, unless WinAPI "performance timer" is not available, then standard <a class="normal" href="CastleTimeUtils.html#GetTickCount">GetTickCount</a> is used.</p>
</td></tr>
</table>
<h3 class="detail">Types</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TFloatTime"></a><code><b>TFloatTime</b> = Double;</code></td>
</tr>
<tr><td colspan="1">
<p>
Time in seconds. This is used throughout my engine to represent time as a floating-point value with good accuracy in seconds. In particular, for VRML / X3D time-dependent nodes.
<p>Implementation notes, about the choice of precision:
<p></p>
<ul class="paragraph_spacing">
<li><p>"Single" precision is sometimes <i>not</i> enough for this. Proof: open rotate.kanim (from demo_models). Change "on display" time pass to 1000, wait a couple seconds (world time will reach a couple of thousands), change "on display" time pass back to 1. Result: with time as Single, animation becomes jagged. Reason: the precision loss of Single time, and the fact that Render is not called all the time (because AutoRedisplay is false, and model is in Examine mode and is still (not rotating)), so incrementation steps of AnimationTime are very very small.
<p>Setting AutoRedisplay to true workarounds the problem too, but that's 1. unacceptable to eat 100% CPU without a reason for utility like view3dscene 2. that's asking for trouble, after all even with AutoRedisplay = true the precision loss is there, it's just not noticeable... using better precision feels much safer.</p></li>
<li><p>For X3D, SFTime has "Double" precision. Also "The Castle" and "The Rift" prooved it's enough in practice.
<p>I could have choosen Extended here, but for X3D sake (to avoid unnecessary floating-point convertions all around), let's stick to Double for now.</p></li>
</ul>
<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TMilisecTime"></a><code><b>TMilisecTime</b> = LongWord;</code></td>
</tr>
<tr><td colspan="1">
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TProcessTimerResult"></a><code><b>TProcessTimerResult</b> =
clock_t
;</code></td>
</tr>
<tr><td colspan="1">
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TTimerResult"></a><code><b>TTimerResult</b> = Int64;</code></td>
</tr>
<tr><td colspan="1">
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TTimerFrequency"></a><code><b>TTimerFrequency</b> = LongWord;</code></td>
</tr>
<tr><td colspan="1">
</td></tr>
</table>
<h3 class="detail">Constants</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="OldestTime"></a><code><b>OldestTime</b> = -MaxDouble;</code></td>
</tr>
<tr><td colspan="1">
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="MinDateTime"></a><code><b>MinDateTime</b>: TDateTime = MinDouble;</code></td>
</tr>
<tr><td colspan="1">
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="ProcessTimersPerSec"></a><code><b>ProcessTimersPerSec</b>
=
128
;</code></td>
</tr>
<tr><td colspan="1">
<p>
Resolution of process timer. </p>
<h6 class="description_section">See also</h6>
<dl class="see_also">
<dt><a class="normal" href="CastleTimeUtils.html#ProcessTimerNow">ProcessTimerNow</a></dt>
<dd>Current value of process (CPU) timer.</dd>
</dl>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TimerFrequency"></a><code><b>TimerFrequency</b>: <a href="CastleTimeUtils.html#TTimerFrequency">TTimerFrequency</a> = 1000000;</code></td>
</tr>
<tr><td colspan="1">
</td></tr>
</table>
<!-- Piwik -->
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var u=(("https:" == document.location.protocol) ? "https" : "http") + "://michalis.ii.uni.wroc.pl/piwik-castle-engine/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Piwik Code -->
<noscript>
<!-- Piwik Image Tracker -->
<img src="http://michalis.ii.uni.wroc.pl/piwik-castle-engine/piwik.php?idsite=1&rec=1" style="border:0" alt="" />
<!-- End Piwik -->
</noscript>
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.13.0</a> on 2015-06-15 04:43:12</em>
</span>
</td></tr></table></body></html>
|