Fixed oversights in collision code. More sound control.
[luagame.git] / doc / class_objectlist.html
blobeffeb2dad614499758dd963fc4c86f8da651bee6
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6 <meta name="generator" content="AsciiDoc 8.2.1" />
7 <style type="text/css">
8 /* Debug borders */
9 p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
11 border: 1px solid red;
15 body {
16 margin: 1em 5% 1em 5%;
19 a {
20 color: blue;
21 text-decoration: underline;
23 a:visited {
24 color: fuchsia;
27 em {
28 font-style: italic;
31 strong {
32 font-weight: bold;
35 tt {
36 color: navy;
39 h1, h2, h3, h4, h5, h6 {
40 color: #527bbd;
41 font-family: sans-serif;
42 margin-top: 1.2em;
43 margin-bottom: 0.5em;
44 line-height: 1.3;
47 h1 {
48 border-bottom: 2px solid silver;
50 h2 {
51 border-bottom: 2px solid silver;
52 padding-top: 0.5em;
55 div.sectionbody {
56 font-family: serif;
57 margin-left: 0;
60 hr {
61 border: 1px solid silver;
64 p {
65 margin-top: 0.5em;
66 margin-bottom: 0.5em;
69 pre {
70 padding: 0;
71 margin: 0;
74 span#author {
75 color: #527bbd;
76 font-family: sans-serif;
77 font-weight: bold;
78 font-size: 1.1em;
80 span#email {
82 span#revision {
83 font-family: sans-serif;
86 div#footer {
87 font-family: sans-serif;
88 font-size: small;
89 border-top: 2px solid silver;
90 padding-top: 0.5em;
91 margin-top: 4.0em;
93 div#footer-text {
94 float: left;
95 padding-bottom: 0.5em;
97 div#footer-badges {
98 float: right;
99 padding-bottom: 0.5em;
102 div#preamble,
103 div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
104 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
105 div.admonitionblock {
106 margin-right: 10%;
107 margin-top: 1.5em;
108 margin-bottom: 1.5em;
110 div.admonitionblock {
111 margin-top: 2.5em;
112 margin-bottom: 2.5em;
115 div.content { /* Block element content. */
116 padding: 0;
119 /* Block element titles. */
120 div.title, caption.title {
121 font-family: sans-serif;
122 font-weight: bold;
123 text-align: left;
124 margin-top: 1.0em;
125 margin-bottom: 0.5em;
127 div.title + * {
128 margin-top: 0;
131 td div.title:first-child {
132 margin-top: 0.0em;
134 div.content div.title:first-child {
135 margin-top: 0.0em;
137 div.content + div.title {
138 margin-top: 0.0em;
141 div.sidebarblock > div.content {
142 background: #ffffee;
143 border: 1px solid silver;
144 padding: 0.5em;
147 div.listingblock {
148 margin-right: 0%;
150 div.listingblock > div.content {
151 border: 1px solid silver;
152 background: #f4f4f4;
153 padding: 0.5em;
156 div.quoteblock > div.content {
157 padding-left: 2.0em;
160 div.attribution {
161 text-align: right;
163 div.verseblock + div.attribution {
164 text-align: left;
167 div.admonitionblock .icon {
168 vertical-align: top;
169 font-size: 1.1em;
170 font-weight: bold;
171 text-decoration: underline;
172 color: #527bbd;
173 padding-right: 0.5em;
175 div.admonitionblock td.content {
176 padding-left: 0.5em;
177 border-left: 2px solid silver;
180 div.exampleblock > div.content {
181 border-left: 2px solid silver;
182 padding: 0.5em;
185 div.verseblock div.content {
186 white-space: pre;
189 div.imageblock div.content { padding-left: 0; }
190 div.imageblock img { border: 1px solid silver; }
191 span.image img { border-style: none; }
193 dl {
194 margin-top: 0.8em;
195 margin-bottom: 0.8em;
197 dt {
198 margin-top: 0.5em;
199 margin-bottom: 0;
200 font-style: italic;
202 dd > *:first-child {
203 margin-top: 0;
206 ul, ol {
207 list-style-position: outside;
209 ol.olist2 {
210 list-style-type: lower-alpha;
213 div.tableblock > table {
214 border: 3px solid #527bbd;
216 thead {
217 font-family: sans-serif;
218 font-weight: bold;
220 tfoot {
221 font-weight: bold;
224 div.hlist {
225 margin-top: 0.8em;
226 margin-bottom: 0.8em;
228 div.hlist td {
229 padding-bottom: 5px;
231 td.hlist1 {
232 vertical-align: top;
233 font-style: italic;
234 padding-right: 0.8em;
236 td.hlist2 {
237 vertical-align: top;
240 @media print {
241 div#footer-badges { display: none; }
244 div#toctitle {
245 color: #527bbd;
246 font-family: sans-serif;
247 font-size: 1.1em;
248 font-weight: bold;
249 margin-top: 1.0em;
250 margin-bottom: 0.1em;
253 div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
254 margin-top: 0;
255 margin-bottom: 0;
257 div.toclevel2 {
258 margin-left: 2em;
259 font-size: 0.9em;
261 div.toclevel3 {
262 margin-left: 4em;
263 font-size: 0.9em;
265 div.toclevel4 {
266 margin-left: 6em;
267 font-size: 0.9em;
269 /* Workarounds for IE6's broken and incomplete CSS2. */
271 div.sidebar-content {
272 background: #ffffee;
273 border: 1px solid silver;
274 padding: 0.5em;
276 div.sidebar-title, div.image-title {
277 font-family: sans-serif;
278 font-weight: bold;
279 margin-top: 0.0em;
280 margin-bottom: 0.5em;
283 div.listingblock div.content {
284 border: 1px solid silver;
285 background: #f4f4f4;
286 padding: 0.5em;
289 div.quoteblock-content {
290 padding-left: 2.0em;
293 div.exampleblock-content {
294 border-left: 2px solid silver;
295 padding-left: 0.5em;
298 /* IE6 sets dynamically generated links as visited. */
299 div#toc a:visited { color: blue; }
300 </style>
301 <script type="text/javascript">
302 /*<![CDATA[*/
303 window.onload = function(){generateToc(2)}
304 /* Author: Mihai Bazon, September 2002
305 * http://students.infoiasi.ro/~mishoo
307 * Table Of Content generator
308 * Version: 0.4
310 * Feel free to use this script under the terms of the GNU General Public
311 * License, as long as you do not remove or alter this notice.
314 /* modified by Troy D. Hanson, September 2006. License: GPL */
315 /* modified by Stuart Rackham, October 2006. License: GPL */
317 function getText(el) {
318 var text = "";
319 for (var i = el.firstChild; i != null; i = i.nextSibling) {
320 if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
321 text += i.data;
322 else if (i.firstChild != null)
323 text += getText(i);
325 return text;
328 function TocEntry(el, text, toclevel) {
329 this.element = el;
330 this.text = text;
331 this.toclevel = toclevel;
334 function tocEntries(el, toclevels) {
335 var result = new Array;
336 var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
337 // Function that scans the DOM tree for header elements (the DOM2
338 // nodeIterator API would be a better technique but not supported by all
339 // browsers).
340 var iterate = function (el) {
341 for (var i = el.firstChild; i != null; i = i.nextSibling) {
342 if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
343 var mo = re.exec(i.tagName)
344 if (mo)
345 result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
346 iterate(i);
350 iterate(el);
351 return result;
354 // This function does the work. toclevels = 1..4.
355 function generateToc(toclevels) {
356 var toc = document.getElementById("toc");
357 var entries = tocEntries(document.getElementsByTagName("body")[0], toclevels);
358 for (var i = 0; i < entries.length; ++i) {
359 var entry = entries[i];
360 if (entry.element.id == "")
361 entry.element.id = "toc" + i;
362 var a = document.createElement("a");
363 a.href = "#" + entry.element.id;
364 a.appendChild(document.createTextNode(entry.text));
365 var div = document.createElement("div");
366 div.appendChild(a);
367 div.className = "toclevel" + entry.toclevel;
368 toc.appendChild(div);
371 /*]]>*/
372 </script>
373 <title>ObjectList Class Reference</title>
374 </head>
375 <body>
376 <div id="header">
377 <h1>ObjectList Class Reference</h1>
378 <div id="toc">
379 <div id="toctitle">Table of Contents</div>
380 <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
381 </div>
382 </div>
383 <h2>1. Attributes</h2>
384 <div class="sectionbody">
385 <p><em>Italics</em> means private (in the sense that they shouldn't be set manually).</p>
386 <div class="tableblock">
387 <table rules="all"
388 frame="hsides"
389 cellspacing="0" cellpadding="4">
390 <col width="171" />
391 <col width="240" />
392 <thead>
393 <tr>
394 <th align="left">
395 Attribute
396 </th>
397 <th align="left">
398 Description
399 </th>
400 </tr>
401 </thead>
402 <tbody valign="top">
403 <tr>
404 <td align="left">
405 <em>head</em>
406 </td>
407 <td align="left">
408 head of the list
409 </td>
410 </tr>
411 <tr>
412 <td align="left">
413 <em>tail</em>
414 </td>
415 <td align="left">
416 tail of the list
417 </td>
418 </tr>
419 <tr>
420 <td align="left">
421 <em>temp</em>
422 </td>
423 <td align="left">
424 temporary data slot
425 </td>
426 </tr>
427 <tr>
428 <td align="left">
429 <em>size</em>
430 </td>
431 <td align="left">
432 the size of the list (read-only)
433 </td>
434 </tr>
435 </tbody>
436 </table>
437 </div>
438 </div>
439 <h2>2. Methods</h2>
440 <div class="sectionbody">
441 <div class="tableblock">
442 <table rules="all"
443 frame="hsides"
444 cellspacing="0" cellpadding="4">
445 <col width="171" />
446 <col width="240" />
447 <thead>
448 <tr>
449 <th align="left">
450 Method
451 </th>
452 <th align="left">
453 Description
454 </th>
455 </tr>
456 </thead>
457 <tbody valign="top">
458 <tr>
459 <td align="left">
460 new(o)
461 </td>
462 <td align="left">
463 constructor
464 </td>
465 </tr>
466 <tr>
467 <td align="left">
468 push_front(obj)
469 </td>
470 <td align="left">
471 adds an object to the front of the list
472 </td>
473 </tr>
474 <tr>
475 <td align="left">
476 push_back(obj)
477 </td>
478 <td align="left">
479 adds an object to the back of the list
480 </td>
481 </tr>
482 <tr>
483 <td align="left">
484 front()
485 </td>
486 <td align="left">
487 returns the element at the front of the list, else nil
488 </td>
489 </tr>
490 <tr>
491 <td align="left">
492 back()
493 </td>
494 <td align="left">
495 returns the element at the back of the list, else nil
496 </td>
497 </tr>
498 <tr>
499 <td align="left">
500 pop_front()
501 </td>
502 <td align="left">
503 removes the front element from the list
504 </td>
505 </tr>
506 <tr>
507 <td align="left">
508 pop_back()
509 </td>
510 <td align="left">
511 removes the back element from the list
512 </td>
513 </tr>
514 <tr>
515 <td align="left">
516 clear()
517 </td>
518 <td align="left">
519 clears the list
520 </td>
521 </tr>
522 <tr>
523 <td align="left">
524 iterator()
525 </td>
526 <td align="left">
527 returns an iterator for use in a generic for loop
528 </td>
529 </tr>
530 <tr>
531 <td align="left">
532 update_all()
533 </td>
534 <td align="left">
535 updates all Object instances in the list
536 </td>
537 </tr>
538 <tr>
539 <td align="left">
540 draw_all()
541 </td>
542 <td align="left">
543 draws all Object instances in the list
544 </td>
545 </tr>
546 </tbody>
547 </table>
548 </div>
549 </div>
550 <h2>3. Usage</h2>
551 <div class="sectionbody">
552 <p>This class is designed with an interface similar to the STL::list class. While
553 it happens to be named <em>ObjectList</em>, it can be used to store any data type.</p>
554 <div class="listingblock">
555 <div class="title">Example: Example:</div>
556 <div class="content"><!-- Generator: GNU source-highlight 2.4
557 by Lorenzo Bettini
558 http://www.lorenzobettini.it
559 http://www.gnu.org/software/src-highlite -->
560 <pre><tt>list <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">ObjectList:new</span></span><span style="color: #990000">()</span>
562 <span style="font-weight: bold"><span style="color: #000000">list:push_back</span></span><span style="color: #990000">(</span><span style="color: #FF0000">"world"</span><span style="color: #990000">)</span>
563 <span style="font-weight: bold"><span style="color: #000000">list:push_front</span></span><span style="color: #990000">(</span><span style="color: #FF0000">"hello"</span><span style="color: #990000">)</span>
564 <span style="font-weight: bold"><span style="color: #000000">list:push_back</span></span><span style="color: #990000">(</span><span style="color: #993399">5</span><span style="color: #990000">)</span>
566 <span style="font-style: italic"><span style="color: #9A1900">--prints:</span></span>
567 <span style="font-style: italic"><span style="color: #9A1900">-- hello</span></span>
568 <span style="font-style: italic"><span style="color: #9A1900">-- world</span></span>
569 <span style="font-style: italic"><span style="color: #9A1900">-- 5</span></span>
570 <span style="font-weight: bold"><span style="color: #0000FF">for</span></span> x <span style="font-weight: bold"><span style="color: #0000FF">in</span></span> <span style="font-weight: bold"><span style="color: #000000">list:iterator</span></span><span style="color: #990000">()</span> <span style="font-weight: bold"><span style="color: #0000FF">do</span></span>
571 <span style="font-weight: bold"><span style="color: #000000">print</span></span><span style="color: #990000">(</span>x<span style="color: #990000">)</span>
572 <span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
574 <span style="font-weight: bold"><span style="color: #000000">list:push_back</span></span><span style="color: #990000">(</span><span style="font-weight: bold"><span style="color: #000000">MyObj:new</span></span><span style="color: #990000">())</span>
575 <span style="font-weight: bold"><span style="color: #000000">list:draw_all</span></span><span style="color: #990000">()</span> <span style="font-style: italic"><span style="color: #9A1900">--draws the previously instantiated object only</span></span>
577 </tt></pre></div></div>
578 </div>
579 <div id="footer">
580 <div id="footer-text">
581 Last updated 18-Aug-2007 19:41:59 EDT
582 </div>
583 </div>
584 </body>
585 </html>