QGIS API Documentation  3.20.0-Odense (decaadbb31)
qgscachedfeatureiterator.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgscachedfeatureiterator.h
3  --------------------------------------
4  Date : 12.2.2013
5  Copyright : (C) 2013 Matthias Kuhn
6  Email : matthias at opengis dot ch
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGSCACHEDFEATUREITERATOR_H
17 #define QGSCACHEDFEATUREITERATOR_H
18 
19 #include "qgis_core.h"
20 #include "qgsfeature.h"
21 #include "qgsfeatureiterator.h"
22 
24 
32 {
33  public:
34 
41  QgsCachedFeatureIterator( QgsVectorLayerCache *vlCache, const QgsFeatureRequest &featureRequest );
42 
48  bool rewind() override;
49 
55  bool close() override;
56 
57  // QgsAbstractFeatureIterator interface
58  protected:
59 
68  bool fetchFeature( QgsFeature &f ) override;
69 
76  bool nextFeatureFilterFids( QgsFeature &f ) override { return fetchFeature( f ); }
77 
78  private:
79  QList< QgsFeatureId > mFeatureIds;
80  QgsVectorLayerCache *mVectorLayerCache = nullptr;
81  QList< QgsFeatureId >::ConstIterator mFeatureIdIterator;
82  QgsCoordinateTransform mTransform;
83  QgsRectangle mFilterRect;
84 };
85 
93 {
94  public:
95 
102  QgsCachedFeatureWriterIterator( QgsVectorLayerCache *vlCache, const QgsFeatureRequest &featureRequest );
103 
109  bool rewind() override;
110 
116  bool close() override;
117 
118  protected:
119 
128  bool fetchFeature( QgsFeature &f ) override;
129 
130  private:
131  QgsFeatureIterator mFeatIt;
132  QgsVectorLayerCache *mVectorLayerCache = nullptr;
133  QgsFeatureIds mFids;
134  QgsCoordinateTransform mTransform;
135  QgsRectangle mFilterRect;
136 };
137 #endif // QGSCACHEDFEATUREITERATOR_H
Internal feature iterator to be implemented within data providers.
virtual bool rewind()=0
reset the iterator to the starting position
virtual bool fetchFeature(QgsFeature &f)=0
If you write a feature iterator for your provider, this is the method you need to implement!...
virtual bool close()=0
end of iterating: free the resources / lock
Delivers features from the cache.
bool nextFeatureFilterFids(QgsFeature &f) override
We have a local special iterator for FilterFids, no need to run the generic.
Uses another iterator as backend and writes features to the cache.
Class for doing transforms between two map coordinate systems.
Wrapper for iterator of features from vector data provider or vector layer.
This class wraps a request for features to a vector layer (or directly its vector data provider).
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition: qgsfeature.h:56
A rectangle specified with double values.
Definition: qgsrectangle.h:42
This class caches features of a given QgsVectorLayer.
QSet< QgsFeatureId > QgsFeatureIds
Definition: qgsfeatureid.h:37