15#ifndef QGSMEMORYFEATUREITERATOR_H
16#define QGSMEMORYFEATUREITERATOR_H
29class QgsMemoryProvider;
39 explicit QgsMemoryFeatureSource(
const QgsMemoryProvider *p );
48 std::unique_ptr< QgsSpatialIndex > mSpatialIndex;
49 QString mSubsetString;
50 std::unique_ptr< QgsExpressionContext > mExpressionContext;
53 friend class QgsMemoryFeatureIterator;
60 QgsMemoryFeatureIterator( QgsMemoryFeatureSource *source,
bool ownSource,
const QgsFeatureRequest &request );
62 ~QgsMemoryFeatureIterator()
override;
65 bool close()
override;
72 bool nextFeatureUsingList( QgsFeature &feature );
73 bool nextFeatureTraverseAll( QgsFeature &feature );
75 QgsGeometry mSelectRectGeom;
76 std::unique_ptr< QgsGeometryEngine > mSelectRectEngine;
77 QgsGeometry mDistanceWithinGeom;
78 std::unique_ptr< QgsGeometryEngine > mDistanceWithinEngine;
79 QgsRectangle mFilterRect;
80 QgsFeatureMap::const_iterator mSelectIterator;
81 bool mUsingFeatureIdList =
false;
82 QList<QgsFeatureId> mFeatureIdList;
83 QList<QgsFeatureId>::const_iterator mFeatureIdListIterator;
84 std::unique_ptr< QgsExpression > mSubsetExpression;
85 QgsCoordinateTransform mTransform;
Helper template that cares of two things: 1.
virtual bool rewind()=0
Resets 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
Call to end the iteration.
Base class that can be used for any class that is capable of returning features.
virtual QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest())=0
Gets an iterator for features matching the specified request.
Represents a coordinate reference system (CRS).
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Wrapper for iterator of features from vector data provider or vector layer.
Wraps a request for features to a vector layer (or directly its vector data provider).
Container of fields for a vector layer.
A spatial index for QgsFeature objects.
QMap< QgsFeatureId, QgsFeature > QgsFeatureMap