2
* Copyright (c) 2005-2008, The haXe Project Contributors
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are met:
7
* - Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* - Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
13
* THIS SOFTWARE IS PROVIDED BY THE HAXE PROJECT CONTRIBUTORS "AS IS" AND ANY
14
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16
* DISCLAIMED. IN NO EVENT SHALL THE HAXE PROJECT CONTRIBUTORS BE LIABLE FOR
17
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
27
class FastCell<T> #if flash9 implements haxe.rtti.Generic #end {
29
public var next : FastCell<T>;
30
public function new(elt,next) { this.elt = elt; this.next = next; }
34
A linked-list of elements. A different class is created for each container used in platforms where it matters
36
class FastList<T> #if flash9 implements haxe.rtti.Generic #end {
38
public var head : FastCell<T>;
41
Creates a new empty list.
43
public function new() {
47
Add an element at the head of the list.
49
public inline function add( item : T ) {
50
head = new FastCell<T>(item,head);
54
Returns the first element of the list, or null
57
public inline function first() : Null<T> {
58
return if( head == null ) null else head.elt;
62
Removes the first element of the list and
63
returns it or simply returns null if the
66
public inline function pop() : Null<T> {
77
Tells if a list is empty.
79
public inline function isEmpty() : Bool {
80
return (head == null);
84
Remove the first element that is [== v] from the list.
85
Returns [true] if an element was removed, [false] otherwise.
87
public function remove( v : T ) : Bool {
105
Returns an iterator on the elements of the list.
107
public function iterator() : Iterator<T> {
110
hasNext : function() {
122
Returns a displayable representation of the String.
124
public function toString() {
131
return "{"+a.join(",")+"}";