00001 // Copyright (C) 2005 Alexander Ushakov 00002 // Contents: Definition of class PowerWordIterator 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 00027 public: 00028 typedef pair< int , int > PII; 00029 00031 // // 00032 // Constructors // 00033 // // 00035 public: 00036 WordIterator( ); 00037 WordIterator( Word& w , bool begin=true ); 00038 00040 // // 00041 // Operators // 00042 // // 00044 public: 00045 bool operator!= ( const WordIterator& WI ) const; 00046 bool operator== ( const WordIterator& WI ) const; 00047 00048 const WordIterator& operator++ ( ); 00049 WordIterator operator++ ( int doomy ); 00050 const WordIterator& operator-- ( ); 00051 WordIterator operator-- ( int doomy ); 00052 PII operator* ( ) const; 00053 00055 // // 00056 // Accessors: // 00057 // // 00059 00060 public: 00061 00063 // // 00064 // Data members // 00065 // // 00067 private: 00068 00069 Word* theWord; 00070 list< PII >::iterator theIterator; 00071 int theOffset; 00072 00073 }; 00074 00075 00076 //---------------------------------------------------------------------------// 00077 //----------------------------- ConstWordIterator ---------------------------// 00078 //---------------------------------------------------------------------------// 00079 00080 00081 class ConstWordIterator 00082 { 00083 frient class Word; 00084 00085 public: 00086 typedef pair< int , int > PII; 00087 00089 // // 00090 // Constructors // 00091 // // 00093 public: 00094 ConstWordIterator( ); 00095 ConstWordIterator( const Word& w , bool begin=true ); 00096 ConstWordIterator( const WordIterator& WI ); 00097 00099 // // 00100 // Operators // 00101 // // 00103 public: 00104 ConstWordIterator& operator= ( const WordIterator& WI ); 00105 00106 bool operator!= ( const ConstWordIterator& WI ) const; 00107 bool operator== ( const ConstWordIterator& WI ) const; 00108 00109 const ConstWordIterator& operator++ ( ); 00110 ConstWordIterator operator++ ( int doomy ); 00111 const ConstWordIterator& operator-- ( ); 00112 ConstWordIterator operator-- ( int doomy ); 00113 PII operator* ( ) const; 00114 00116 // // 00117 // Accessors: // 00118 // // 00120 00121 public: 00122 00123 00125 // // 00126 // Data members // 00127 // // 00129 private: 00130 00131 const Word* theWord; 00132 list< PII >::const_iterator theIterator; 00133 int theOffset; 00134 00135 }; 00136 00137 00138 #endif 00139 00140