00001 00015 #ifndef __ArrayIterator_H__ 00016 #define __ArrayIterator_H__ 00017 00018 // Includes 00019 00020 // Forward declares 00021 template <class TYPE> class Array; 00022 00023 // ArrayIterator 00024 template <class TYPE> 00025 class ArrayIterator 00026 { 00027 public: 00031 ArrayIterator(const Array<TYPE>& array); 00032 00036 void MoveFirst(); 00037 00041 void MoveNext(); 00042 00046 void MovePrevious(); 00047 00051 void MoveLast(); 00052 00059 bool IsValid() const; 00060 00067 TYPE& GetCurrent() const; 00068 00076 int GetCurrentIndex() const; 00077 00085 bool Find( 00086 const TYPE& data 00087 ); 00088 00089 private: 00090 int get_; 00091 const Array<TYPE>* array_; 00092 }; 00093 00094 // Implementation 00095 #include "ArrayIterator.inl" 00096 00097 #endif /* __ArrayIterator_H__ */ 00098