00001 #ifndef DDF_PROPERTYSETITERATOR_H 00002 #define DDF_PROPERTYSETITERATOR_H 00003 00004 #include <iterator> 00005 #include <string> 00006 #include <map> 00007 00008 namespace afl 00009 { 00010 namespace ddf 00011 { 00012 class PropertySet; 00013 class Property; 00014 00020 class PropertySetIterator : public std::iterator<std::bidirectional_iterator_tag, Property*> 00021 { 00022 00024 public: 00025 00029 PropertySetIterator( ); 00030 00036 PropertySetIterator( const PropertySetIterator& toCopy ); 00037 00043 PropertySetIterator& operator=( const PropertySetIterator& toCopy ); 00044 00048 PropertySetIterator& operator++( ); 00049 00053 PropertySetIterator operator++( int ); 00054 00058 PropertySetIterator operator--( int ); 00059 00063 PropertySetIterator& operator--( ); 00064 00065 00071 bool operator==( const PropertySetIterator& toCompare ) const; 00072 00078 bool operator!=( const PropertySetIterator& toCompare ) const; 00079 00083 Property* operator->( ); 00084 00088 const Property* operator->( ) const; 00089 00093 Property& operator*( ); 00094 00098 const Property& operator*( ) const; 00099 00100 00101 00103 private: 00104 friend class PropertySet; 00110 PropertySetIterator( const std::map<std::string,Property*>::iterator& iter ); 00111 00117 PropertySetIterator( const std::map<std::string,Property*>::const_iterator& iter ); 00118 00119 00120 00123 private: 00127 std::map<std::string,Property*>::iterator _iter; 00128 std::map<std::string,Property*>::const_iterator _citer; 00129 00130 }; 00131 00132 } 00133 } 00134 00135 #endif // PROPERTYSETITERATOR_H 00136