Ilwis-Objects  1.0
GIS and Remote Sensing framework for data access and processing
 All Classes Functions Enumerations Pages
featureiterator.h
1 #ifndef FEATUREITERATOR_H
2 #define FEATUREITERATOR_H
3 
4 namespace Ilwis {
30 class KERNELSHARED_EXPORT FeatureIterator : public std::iterator<std::random_access_iterator_tag, int>
31 {
32 public:
37 
45  FeatureIterator(const Ilwis::IFeatureCoverage &fcoverage);
46  FeatureIterator(const Ilwis::IFeatureCoverage &fcoverage, IlwisTypes types);
47 
56  FeatureIterator(const Ilwis::IFeatureCoverage &fcoverage, const std::vector<quint32>& subset);
57 
65  FeatureIterator(const FeatureIterator& iter);
66 
74  FeatureIterator& operator++() ;
75 
83  FeatureIterator operator++(int);
84 
85 
93  FeatureIterator& operator+(int);
94 
102  FeatureIterator& operator-(int);
103 
112  bool operator==(const FeatureIterator& rhs) ;
113 
122  bool operator!=(const FeatureIterator& rhs);
123 
129  UPFeatureI& operator*();
130 
136  FeatureIterator end() const;
137 
143  FeatureIterator end();
144 
145 private:
146  bool init();
147  bool move(qint32 distance=1);
148  IFeatureCoverage _fcoverage;
149  Features::iterator _iterFeatures;
150  bool _isInitial;
151  std::vector<quint32> _subset;
152  quint32 _iterPosition = iUNDEF;
153  bool _useVectorIter = true;
154  IlwisTypes _types;
155 };
156 }
157 
158 inline Ilwis::FeatureIterator begin(const Ilwis::IFeatureCoverage &fcoverage) {
159  return Ilwis::FeatureIterator(fcoverage);
160 }
161 
162 inline Ilwis::FeatureIterator end(const Ilwis::IFeatureCoverage &fcoverage) {
163  Ilwis::FeatureIterator iter(fcoverage);
164  return iter.end();
165 }
166 
167 #endif // FEATUREITERATOR_H