Revision: 21753
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 20, 2009 02:33 by alejandromb
Initial Code
package kc.tda {
import kc.api.IStack;
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="push", type="kc.events.CollectionEvent" )]
[Event( name="pop", type="kc.events.CollectionEvent" )]
public class ArrayStack extends ArrayCollection implements IStack {
// @constructor
public function ArrayStack( 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.PUSH,
CollectionEvent.POP
];
}
// @override
override public function add( value:* ):Boolean {
return push( value );
}
override public function remove( value:* ):Boolean {
return ( value != null )
? super.remove( value )
: ( pop() != 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 push( value:* ):Boolean {
if( ! ResolveStatus() ) {
return false;
}
var quantity:int = size();
_records.unshift( value );
if( size() != quantity ){
ResolveDispatchEvent( CollectionEvent.PUSH );
return true;
} return false;
}
public function pop():* {
var quantity:int = size();
var value:* = _records.shift();
if( size() != quantity ) {
ResolveDispatchEvent( CollectionEvent.POP );
return value;
} return null;
}
}
}
// @INTERFACE
package kc.api {
public interface IStack extends ICollection {
// @methods
function element():*;
function peek():*;
function push(value:*):Boolean;
function pop():*;
}
}
Initial URL
http://www.kirikacode.com
Initial Description
Initial Title
AS3 | ArrayStack
Initial Tags
Initial Language
ActionScript 3