00001 import gugga.collections.IIterator;
00002 import gugga.debug.Assertion;
00003 import gugga.collections.ArrayList;
00004
00018 class gugga.collections.ArrayListIterator implements IIterator
00019 {
00020 private var mArrayList : ArrayList;
00021 private var mCurrent : Number;
00022 private var mIsValid : Boolean;
00023 public function get IsValid() : Boolean { return mIsValid; }
00024
00030 public function ArrayListIterator(aArrayList : ArrayList)
00031 {
00032 mArrayList = aArrayList;
00033 reset();
00034 }
00035
00039 public function reset() : Void
00040 {
00041 mCurrent = -1;
00042 mIsValid = false;
00043 }
00044
00048 public function iterate() : Boolean
00049 {
00050 mCurrent++;
00051
00052 mIsValid = !(mArrayList[mCurrent] == null || mArrayList[mCurrent] == undefined);
00053
00054 return mIsValid;
00055 }
00056
00060 public function current() : Object
00061 {
00062 Assertion.failIfFalse(
00063 mIsValid,
00064 "There is no valid value of the current item for index " + mCurrent, this, arguments);
00065
00066 return mArrayList[mCurrent];
00067 }
00068
00072 public function get Current() : Object
00073 {
00074 return current();
00075 }
00076
00080 public function clone () : IIterator
00081 {
00082 return new ArrayListIterator(mArrayList.clone());
00083 }
00084 }