29 , mGeometrySimplifier( nullptr )
30 , mLocalSimplification( false )
31 , mUseCachedFeatures( false )
37 delete mGeometrySimplifier;
48 if ( mUseCachedFeatures )
50 if ( mFeatureIterator != mCachedFeatures.
constEnd() )
52 f = mFeatureIterator->mFeature;
82 if ( dataOk && mLocalSimplification )
140 mLocalSimplification =
false;
142 delete mGeometrySimplifier;
143 mGeometrySimplifier =
nullptr;
149 mLocalSimplification =
nullptr != mGeometrySimplifier;
150 return mLocalSimplification;
158 if ( !orderBys.
isEmpty() && !prepareOrderBy( orderBys ) )
169 orderByIt->expression().prepare( expressionContext );
171 while ( ++orderByIt != preparedOrderBys.
end() );
179 expressionContext->setFeature( indexedFeature.
mFeature );
189 mCachedFeatures.
append( indexedFeature );
192 qSort( mCachedFeatures.
begin(), mCachedFeatures.
end(), QgsExpressionSorter( preparedOrderBys ) );
194 mFeatureIterator = mCachedFeatures.
constBegin();
195 mUseCachedFeatures =
true;
203 Q_UNUSED( methodType )
207 bool QgsAbstractFeatureIterator::simplify(
QgsFeature& feature )
210 if ( mGeometrySimplifier )
231 if (
this != &other )
QgsFeatureId id() const
Get the feature ID for this feature.
Wrapper for iterator of features from vector data provider or vector layer.
const QgsSimplifyMethod & simplifyMethod() const
Get simplification method for geometries that will be fetched.
const Flags & flags() const
Filter using feature IDs.
Q_DECL_DEPRECATED QVariant evaluate(const QgsFeature *f)
Evaluate the feature and return the result.
long mFetchedCount
Number of features already fetched by iterator.
virtual bool fetchFeature(QgsFeature &f)=0
If you write a feature iterator for your provider, this is the method you need to implement!! ...
void setFeature(const QgsFeature &feature)
Convenience function for setting a feature for the context.
QgsExpressionContext * expressionContext()
Returns the expression context used to evaluate filter expressions.
const QgsFeatureIds & filterFids() const
Get feature IDs that should be fetched.
QGis::GeometryType type() const
Returns type of the geometry as a QGis::GeometryType.
A geometry is the spatial representation of a feature.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
virtual bool simplifyGeometry(QgsGeometry *geometry) const =0
Simplifies the specified geometry.
QgsExpression expression() const
The expression.
void append(const T &value)
virtual bool nextFeature(QgsFeature &f)
fetch next feature, return true on success
Temporarily used structure to cache order by information.
QgsFeatureIterator & operator=(const QgsFeatureIterator &other)
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
virtual bool nextFeatureFilterExpression(QgsFeature &f)
By default, the iterator will fetch all features and check if the feature matches the expression...
bool mZombie
A feature iterator may be closed already but still be serving features from the cache.
This class wraps a request for features to a vector layer (or directly its vector data provider)...
No simplification is applied.
FilterType filterType() const
Return the filter type which is currently set on this request.
void deref()
remove reference, delete if refs == 0
long limit() const
Returns the maximum number of features to request, or -1 if no limit set.
virtual bool nextFeatureFilterFids(QgsFeature &f)
By default, the iterator will fetch all features and check if the id is in the request.
QgsGeometry * geometry()
Get the geometry object associated with this feature.
The OrderByClause class represents an order by clause for a QgsFeatureRequest.
bool contains(const T &value) const
QgsFeatureRequest mRequest
A copy of the feature request.
QgsAbstractFeatureIterator * mIter
const QgsGeometry * constGeometry() const
Gets a const pointer to the geometry object associated with this feature.
OrderBy orderBy() const
Return a list of order by clauses specified for this feature request.
static QgsAbstractGeometrySimplifier * createGeometrySimplifier(const QgsSimplifyMethod &simplifyMethod)
Creates a geometry simplifier according to specified method.
QVector< QVariant > mIndexes
void replace(int i, const T &value)
This class contains information about how to simplify geometries fetched from a QgsFeatureIterator.
int refs
reference counting (to allow seamless copying of QgsFeatureIterator instances) TODO QGIS3: make this ...
const_iterator constEnd() const
const_iterator constBegin() const
Geometry is not required. It may still be returned if e.g. required for a filter condition.
virtual bool prepareSimplification(const QgsSimplifyMethod &simplifyMethod)
Setup the simplification of geometries to fetch using the specified simplify method.
virtual ~QgsAbstractFeatureIterator()
destructor makes sure that the iterator is closed properly
QgsAbstractFeatureIterator(const QgsFeatureRequest &request)
base class constructor - stores the iteration parameters
MethodType methodType() const
Gets the simplification type.
bool forceLocalOptimization() const
Gets whether the simplification executes after fetch the geometries from provider, otherwise it executes, when supported, in provider before fetch the geometries.
QgsExpression * filterExpression() const
Returns the filter expression if set.