1
8
9 import com.sekati.core.CoreObject;
10
11
14 class com.sekati.data.Iterator extends CoreObject {
15
16 private var _data:Array;
17 private var _i:Number;
18
19
24 public function Iterator(data:Array) {
25 super( );
26 if(!data) {
27 throw new Error( "@@@ " + this.toString( ) + " Error: instance constructor expects data:Array argument." );
28 return;
29 } else {
30 _data = data;
31 reset( );
32 }
33 }
34
35
39 public function next():Object {
40 return hasNext( ) ? _data[_i++] : null;
41 }
42
43
47 public function previous():Object {
48 return hasPrevious( ) ? _data[_i--] : null;
49 }
50
51
55 public function current():Object {
56 return _data[_i];
57 }
58
59
63 public function reset():Void {
64 _i = -1;
65 }
66
67
71 public function hasNext():Boolean {
72 return _i + 1 < _data.length;
73 }
74
75
79 public function hasPrevious():Boolean {
80 return _i - 1 >= 0;
81 }
82
83
87 public function nextIndex():Number {
88 return Math.min( _i + 1, _data.length );
89 }
90
91
95 public function previousIndex():Number {
96 return Math.max( _i - 1, -1 );
97 }
98
99
103 public function currentIndex():Number {
104 return _i;
105 }
106
107
112 public function set data(data:Array):Void {
113 _data = data;
114 }
115
116
120 public function get data():Array {
121 return _data;
122 }
123 }