00001 // Copyright (C) 2005 Alexander Ushakov 00002 // Contents: Definition of class WordIterator 00003 // 00004 // Principal Authors: Alexander Ushakov 00005 // 00006 // Revision History: 00007 // 00008 00009 #ifndef _WordIterator_H_ 00010 #define _WordIterator_H_ 00011 00012 00013 #include "list" 00014 using namespace std; 00015 00016 class Word; 00017 00018 //---------------------------------------------------------------------------// 00019 //------------------------------- WordIterator ------------------------------// 00020 //---------------------------------------------------------------------------// 00021 00022 00023 class WordIterator 00024 { 00025 friend class ConstWordIterator; 00026 friend class WordRep; 00027 friend class Word; 00028 00029 public: 00030 typedef pair< int , int > PII; 00031 00033 // // 00034 // Constructors // 00035 // // 00037 00038 public: 00039 WordIterator( ); 00040 WordIterator( Word& w , bool begin=true ); 00041 00042 private: 00043 WordIterator( list<int>& lst , list< int >::iterator it ); 00044 00046 // // 00047 // Operators // 00048 // // 00050 public: 00051 bool operator!= ( const WordIterator& WI ) const; 00052 bool operator== ( const WordIterator& WI ) const; 00053 00054 const WordIterator& operator++ ( ); 00055 WordIterator operator++ ( int doomy ); 00056 const WordIterator& operator-- ( ); 00057 WordIterator operator-- ( int doomy ); 00058 int operator* ( ) const; 00059 00061 // // 00062 // Accessors: // 00063 // // 00065 00066 public: 00067 00069 // // 00070 // Data members // 00071 // // 00073 private: 00074 00075 list< int >* theList; 00076 list< int >::iterator theIterator; 00077 }; 00078 00079 00080 //---------------------------------------------------------------------------// 00081 //----------------------------- ConstWordIterator ---------------------------// 00082 //---------------------------------------------------------------------------// 00083 00084 00085 class ConstWordIterator 00086 { 00087 friend class WordRep; 00088 00089 public: 00090 typedef pair< int , int > PII; 00091 00093 // // 00094 // Constructors // 00095 // // 00097 public: 00098 ConstWordIterator( ); 00099 ConstWordIterator( const Word& w , bool begin=true ); 00100 ConstWordIterator( const WordIterator& WI ); 00101 00103 // // 00104 // Operators // 00105 // // 00107 public: 00108 ConstWordIterator& operator= ( const WordIterator& WI ); 00109 00110 bool operator!= ( const ConstWordIterator& WI ) const; 00111 bool operator== ( const ConstWordIterator& WI ) const; 00112 00113 const ConstWordIterator& operator++ ( ); 00114 ConstWordIterator operator++ ( int doomy ); 00115 const ConstWordIterator& operator-- ( ); 00116 ConstWordIterator operator-- ( int doomy ); 00117 int operator* ( ) const; 00118 00120 // // 00121 // Accessors: // 00122 // // 00124 00125 public: 00126 00127 00129 // // 00130 // Data members // 00131 // // 00133 private: 00134 00135 const list< int >* theList; 00136 list< int >::const_iterator theIterator; 00137 }; 00138 00139 00140 #endif 00141 00142