Revision: 21752
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 20, 2009 02:32 by alejandromb
Initial Code
package kc.tda {
import kc.api.IQueue;
import kc.events.CollectionEvent;
[Event( name="addAll", type="kc.events.CollectionEvent" )]
[Event( name="clear", type="kc.events.CollectionEvent" )]
[Event( name="remove", type="kc.events.CollectionEvent" )]
[Event( name="removeAll", type="kc.events.CollectionEvent" )]
[Event( name="retain", type="kc.events.CollectionEvent" )]
[Event( name="enqueue", type="kc.events.CollectionEvent" )]
[Event( name="dequeue", type="kc.events.CollectionEvent" )]
public class ArrayQueue extends ArrayCollection implements IQueue {
// @constructor
public function ArrayQueue( capacity:int = undefined, expandableCapacity:Boolean = false, loadFactor:Number = NaN ) {
super( capacity, expandableCapacity, loadFactor );
_events = [
CollectionEvent.ADD_ALL,
CollectionEvent.CLEAR,
CollectionEvent.REMOVE,
CollectionEvent.REMOVE_ALL,
CollectionEvent.RETAIN,
CollectionEvent.ENQUEUE,
CollectionEvent.DEQUEUE
];
}
// @override
override public function add( value:* ):Boolean {
return enqueue( value );
}
override public function remove( value:* ):Boolean {
return ( value != null )
? super.remove( value )
: ( dequeue() != null )
? true
: false;
}
// @methods
public function element():* {
ThrowIsEmpty();
return _records[0];
}
public function peek():* {
try{
var value:* = element();
}catch(e:Error){
return null;
} return value;
}
public function enqueue( value:* ):Boolean {
if( ! ResolveStatus() ) {
return false;
}
var quantity:int = size();
_records.push( value );
if( size() != quantity ){
ResolveDispatchEvent( CollectionEvent.ENQUEUE );
return true;
} return false;
}
public function dequeue():* {
var quantity:int = size();
var value:* = _records.shift();
if( size() != quantity ) {
ResolveDispatchEvent( CollectionEvent.DEQUEUE );
return value;
} return null;
}
}
}
// @INTERFACE
package kc.api {
public interface IQueue extends ICollection {
// @methods
function element():*;
function peek():*;
function enqueue(value:*):Boolean;
function dequeue():*;
}
}
Initial URL
http://www.kirikacode.com
Initial Description
Initial Title
AS3 | ArrayQueue
Initial Tags
Initial Language
ActionScript 3