QGIS API Documentation
2.4.0-Chugiak
|
#include <qgsvectorlayerfeatureiterator.h>
Classes | |
struct | FetchJoinInfo |
Join information prepared for fast attribute id mapping in QgsVectorLayerJoinBuffer::updateFeatureAttributes(). More... | |
Public Member Functions | |
QgsVectorLayerFeatureIterator (QgsVectorLayerFeatureSource *source, bool ownSource, const QgsFeatureRequest &request) | |
~QgsVectorLayerFeatureIterator () | |
virtual bool | rewind () |
reset the iterator to the starting position More... | |
virtual bool | close () |
end of iterating: free the resources / lock More... | |
Public Member Functions inherited from QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource > | |
QgsAbstractFeatureIteratorFromSource (QgsVectorLayerFeatureSource *source, bool ownSource, const QgsFeatureRequest &request) | |
~QgsAbstractFeatureIteratorFromSource () | |
Public Member Functions inherited from QgsAbstractFeatureIterator | |
QgsAbstractFeatureIterator (const QgsFeatureRequest &request) | |
base class constructor - stores the iteration parameters More... | |
virtual | ~QgsAbstractFeatureIterator () |
destructor makes sure that the iterator is closed properly More... | |
virtual bool | nextFeature (QgsFeature &f) |
fetch next feature, return true on success More... | |
Protected Member Functions | |
virtual bool | fetchFeature (QgsFeature &feature) |
fetch next feature, return true on success More... | |
virtual bool | nextFeatureFilterExpression (QgsFeature &f) |
Overrides default method as we only need to filter features in the edit buffer while for others filtering is left to the provider implementation. More... | |
virtual bool | prepareSimplification (const QgsSimplifyMethod &simplifyMethod) |
Setup the simplification of geometries to fetch using the specified simplify method. More... | |
void | rewindEditBuffer () |
void | prepareJoins () |
bool | fetchNextAddedFeature (QgsFeature &f) |
bool | fetchNextChangedGeomFeature (QgsFeature &f) |
bool | fetchNextChangedAttributeFeature (QgsFeature &f) |
void | useAddedFeature (const QgsFeature &src, QgsFeature &f) |
void | useChangedAttributeFeature (QgsFeatureId fid, const QgsGeometry &geom, QgsFeature &f) |
bool | nextFeatureFid (QgsFeature &f) |
void | addJoinedAttributes (QgsFeature &f) |
void | updateChangedAttributes (QgsFeature &f) |
Update feature with uncommited attribute updates. More... | |
void | updateFeatureGeometry (QgsFeature &f) |
Update feature with uncommited geometry updates. More... | |
Protected Member Functions inherited from QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource > | |
void | iteratorClosed () |
to be called by from subclass in close() More... | |
Protected Member Functions inherited from QgsAbstractFeatureIterator | |
virtual bool | nextFeatureFilterFids (QgsFeature &f) |
By default, the iterator will fetch all features and check if the id is in the request. More... | |
void | ref () |
add reference More... | |
void | deref () |
remove reference, delete if refs == 0 More... | |
Protected Attributes | |
QgsFeatureRequest | mProviderRequest |
QgsFeatureIterator | mProviderIterator |
QgsFeatureRequest | mChangedFeaturesRequest |
QgsFeatureIterator | mChangedFeaturesIterator |
QSet< QgsFeatureId > | mFetchConsidered |
QgsGeometryMap::ConstIterator | mFetchChangedGeomIt |
QgsFeatureMap::ConstIterator | mFetchAddedFeaturesIt |
bool | mFetchedFid |
QMap< QgsVectorLayer *, FetchJoinInfo > | mFetchJoinInfo |
information about joins used in the current select() statement. More... | |
Protected Attributes inherited from QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource > | |
QgsVectorLayerFeatureSource * | mSource |
bool | mOwnSource |
Protected Attributes inherited from QgsAbstractFeatureIterator | |
QgsFeatureRequest | mRequest |
A copy of the feature request. More... | |
bool | mClosed |
Set to true, as soon as the iterator is closed. More... | |
int | refs |
reference counting (to allow seamless copying of QgsFeatureIterator instances) More... | |
Private Member Functions | |
virtual bool | providerCanSimplify (QgsSimplifyMethod::MethodType methodType) const |
returns whether the iterator supports simplify geometries on provider side More... | |
Private Attributes | |
QgsAbstractGeometrySimplifier * | mEditGeometrySimplifier |
optional object to locally simplify edited (changed or added) geometries fetched by this feature iterator More... | |
Definition at line 67 of file qgsvectorlayerfeatureiterator.h.
QgsVectorLayerFeatureIterator::QgsVectorLayerFeatureIterator | ( | QgsVectorLayerFeatureSource * | source, |
bool | ownSource, | ||
const QgsFeatureRequest & | request | ||
) |
Definition at line 86 of file qgsvectorlayerfeatureiterator.cpp.
References QgsVectorLayerJoinBuffer::containsJoins(), QgsFields::count(), QgsFields::fieldOrigin(), QgsFields::fieldOriginIndex(), QgsFeatureRequest::FilterExpression, QgsFeatureRequest::filterExpression(), QgsFeatureRequest::FilterFid, QgsFeatureRequest::filterType(), QgsFeatureRequest::flags(), QgsAbstractFeatureSource::getFeatures(), QgsVectorLayerFeatureSource::mChangedAttributeValues, mChangedFeaturesIterator, mChangedFeaturesRequest, mFetchedFid, QgsVectorLayerFeatureSource::mFields, QgsVectorLayerFeatureSource::mHasEditBuffer, QgsVectorLayerFeatureSource::mJoinBuffer, QgsVectorLayerFeatureSource::mProviderFeatureSource, mProviderIterator, mProviderRequest, QgsAbstractFeatureIterator::mRequest, QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource >::mSource, QgsFields::OriginProvider, QgsExpression::prepare(), prepareJoins(), rewindEditBuffer(), QgsFeatureRequest::setFilterFids(), QgsFeatureRequest::setSubsetOfAttributes(), QgsFeatureRequest::SubsetOfAttributes, and QgsFeatureRequest::subsetOfAttributes().
QgsVectorLayerFeatureIterator::~QgsVectorLayerFeatureIterator | ( | ) |
Definition at line 145 of file qgsvectorlayerfeatureiterator.cpp.
References close(), and mEditGeometrySimplifier.
|
protected |
Definition at line 484 of file qgsvectorlayerfeatureiterator.cpp.
References QgsVectorLayerFeatureIterator::FetchJoinInfo::addJoinedAttributesCached(), QgsVectorLayerFeatureIterator::FetchJoinInfo::addJoinedAttributesDirect(), QgsFeature::attribute(), QgsFeature::attributes(), QgsVectorJoinInfo::cachedAttributes, QgsFields::count(), QgsVectorLayerFeatureIterator::FetchJoinInfo::joinInfo, mFetchJoinInfo, QgsVectorLayerFeatureSource::mFields, QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource >::mSource, and QgsVectorLayerFeatureIterator::FetchJoinInfo::targetField.
Referenced by fetchFeature(), fetchNextChangedAttributeFeature(), nextFeatureFid(), useAddedFeature(), and useChangedAttributeFeature().
|
virtual |
end of iterating: free the resources / lock
Implements QgsAbstractFeatureIterator.
Definition at line 246 of file qgsvectorlayerfeatureiterator.cpp.
References QgsFeatureIterator::close(), QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource >::iteratorClosed(), QgsAbstractFeatureIterator::mClosed, and mProviderIterator.
Referenced by fetchFeature(), and ~QgsVectorLayerFeatureIterator().
|
protectedvirtual |
fetch next feature, return true on success
Implements QgsAbstractFeatureIterator.
Definition at line 155 of file qgsvectorlayerfeatureiterator.cpp.
References addJoinedAttributes(), close(), QgsFeatureIterator::close(), fetchNextAddedFeature(), fetchNextChangedAttributeFeature(), fetchNextChangedGeomFeature(), QgsFeatureRequest::FilterExpression, QgsFeatureRequest::FilterFid, QgsFeatureRequest::FilterRect, QgsFeatureRequest::filterType(), QgsFeatureRequest::flags(), QgsAbstractFeatureSource::getFeatures(), QgsFeature::id(), QgsFeatureIterator::isClosed(), mChangedFeaturesIterator, QgsAbstractFeatureIterator::mClosed, mFetchConsidered, mFetchedFid, mFetchJoinInfo, QgsVectorLayerFeatureSource::mFields, QgsVectorLayerFeatureSource::mProviderFeatureSource, mProviderIterator, mProviderRequest, QgsAbstractFeatureIterator::mRequest, QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource >::mSource, QgsFeatureIterator::nextFeature(), nextFeatureFid(), QgsFeatureRequest::NoGeometry, QgsFeature::setFields(), QgsFeature::setValid(), updateChangedAttributes(), and updateFeatureGeometry().
|
protected |
Definition at line 262 of file qgsvectorlayerfeatureiterator.cpp.
References QgsFeatureRequest::acceptFeature(), QgsVectorLayerFeatureSource::mAddedFeatures, mFetchAddedFeaturesIt, mFetchConsidered, QgsAbstractFeatureIterator::mRequest, QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource >::mSource, and useAddedFeature().
Referenced by fetchFeature().
|
protected |
Definition at line 342 of file qgsvectorlayerfeatureiterator.cpp.
References addJoinedAttributes(), QgsExpression::evaluate(), QgsFeatureRequest::FilterExpression, QgsFeatureRequest::filterExpression(), QgsFeatureRequest::filterType(), QgsFeature::id(), mChangedFeaturesIterator, mFetchConsidered, mFetchJoinInfo, QgsAbstractFeatureIterator::mRequest, QgsFeatureIterator::nextFeature(), and updateChangedAttributes().
Referenced by fetchFeature().
|
protected |
Definition at line 315 of file qgsvectorlayerfeatureiterator.cpp.
References QgsFeatureRequest::filterRect(), QgsVectorLayerFeatureSource::mChangedGeometries, mFetchChangedGeomIt, mFetchConsidered, QgsAbstractFeatureIterator::mRequest, QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource >::mSource, and useChangedAttributeFeature().
Referenced by fetchFeature().
|
protected |
Definition at line 641 of file qgsvectorlayerfeatureiterator.cpp.
References addJoinedAttributes(), QgsFeatureRequest::filterFid(), QgsFeatureRequest::flags(), QgsAbstractFeatureSource::getFeatures(), QgsVectorLayerFeatureSource::mAddedFeatures, QgsVectorLayerFeatureSource::mChangedGeometries, QgsVectorLayerFeatureSource::mDeletedFeatureIds, mFetchJoinInfo, QgsVectorLayerFeatureSource::mProviderFeatureSource, mProviderRequest, QgsAbstractFeatureIterator::mRequest, QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource >::mSource, QgsFeatureIterator::nextFeature(), QgsFeatureRequest::NoGeometry, updateChangedAttributes(), useAddedFeature(), and useChangedAttributeFeature().
Referenced by fetchFeature().
|
inlineprotectedvirtual |
Overrides default method as we only need to filter features in the edit buffer while for others filtering is left to the provider implementation.
Reimplemented from QgsAbstractFeatureIterator.
Definition at line 86 of file qgsvectorlayerfeatureiterator.h.
References QgsAbstractFeatureIterator::fetchFeature().
|
protected |
Definition at line 425 of file qgsvectorlayerfeatureiterator.cpp.
References QgsFields::allAttributesList(), QgsFields::exists(), QgsFields::fieldOrigin(), QgsFeatureRequest::flags(), QgsFields::indexFromName(), QgsVectorLayerFeatureIterator::FetchJoinInfo::indexOffset, QgsMapLayerRegistry::instance(), QgsVectorLayerFeatureIterator::FetchJoinInfo::joinField, QgsVectorJoinInfo::joinFieldIndex, QgsVectorJoinInfo::joinFieldName, QgsVectorLayerJoinBuffer::joinForFieldIndex(), QgsVectorLayerFeatureIterator::FetchJoinInfo::joinInfo, QgsVectorLayerFeatureIterator::FetchJoinInfo::joinLayer, QgsVectorJoinInfo::joinLayerId, QgsMapLayerRegistry::mapLayer(), mFetchJoinInfo, QgsVectorLayerFeatureSource::mFields, QgsVectorLayerFeatureSource::mJoinBuffer, QgsAbstractFeatureIterator::mRequest, QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource >::mSource, QgsFields::OriginJoin, QgsVectorLayer::pendingFields(), QgsFeatureRequest::setSubsetOfAttributes(), QgsFeatureRequest::SubsetOfAttributes, QgsFeatureRequest::subsetOfAttributes(), QgsVectorLayerFeatureIterator::FetchJoinInfo::targetField, QgsVectorJoinInfo::targetFieldIndex, and QgsVectorJoinInfo::targetFieldName.
Referenced by QgsVectorLayerFeatureIterator().
|
protectedvirtual |
Setup the simplification of geometries to fetch using the specified simplify method.
Reimplemented from QgsAbstractFeatureIterator.
Definition at line 507 of file qgsvectorlayerfeatureiterator.cpp.
References QgsSimplifyMethod::createGeometrySimplifier(), QgsFeatureRequest::flags(), QgsVectorLayerFeatureSource::mCanBeSimplified, mEditGeometrySimplifier, QgsSimplifyMethod::methodType(), QgsAbstractFeatureIterator::mRequest, QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource >::mSource, QgsFeatureRequest::NoGeometry, and QgsSimplifyMethod::NoSimplification.
|
privatevirtual |
returns whether the iterator supports simplify geometries on provider side
Reimplemented from QgsAbstractFeatureIterator.
Definition at line 521 of file qgsvectorlayerfeatureiterator.cpp.
References QgsVectorDataProvider::capabilities(), QgsSimplifyMethod::NoSimplification, QgsSimplifyMethod::OptimizeForRendering, QgsSimplifyMethod::PreserveTopology, QgsVectorDataProvider::SimplifyGeometries, and QgsVectorDataProvider::SimplifyGeometriesWithTopologicalValidation.
|
virtual |
reset the iterator to the starting position
Implements QgsAbstractFeatureIterator.
Definition at line 228 of file qgsvectorlayerfeatureiterator.cpp.
References QgsFeatureRequest::FilterFid, QgsFeatureRequest::filterType(), QgsAbstractFeatureIterator::mClosed, mFetchedFid, mProviderIterator, QgsAbstractFeatureIterator::mRequest, QgsFeatureIterator::rewind(), and rewindEditBuffer().
|
protected |
Definition at line 415 of file qgsvectorlayerfeatureiterator.cpp.
References QgsVectorLayerFeatureSource::mAddedFeatures, QgsVectorLayerFeatureSource::mChangedGeometries, QgsVectorLayerFeatureSource::mDeletedFeatureIds, mFetchAddedFeaturesIt, mFetchChangedGeomIt, mFetchConsidered, and QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource >::mSource.
Referenced by QgsVectorLayerFeatureIterator(), and rewind().
|
protected |
Update feature with uncommited attribute updates.
Definition at line 681 of file qgsvectorlayerfeatureiterator.cpp.
References QgsFeature::attributes(), QgsFeature::id(), QgsVectorLayerFeatureSource::mAddedAttributes, QgsVectorLayerFeatureSource::mChangedAttributeValues, QgsVectorLayerFeatureSource::mDeletedAttributeIds, and QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource >::mSource.
Referenced by fetchFeature(), fetchNextChangedAttributeFeature(), nextFeatureFid(), and useChangedAttributeFeature().
|
protected |
Update feature with uncommited geometry updates.
Definition at line 703 of file qgsvectorlayerfeatureiterator.cpp.
References QgsFeature::id(), QgsVectorLayerFeatureSource::mChangedGeometries, QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource >::mSource, and QgsFeature::setGeometry().
Referenced by fetchFeature().
|
protected |
Definition at line 286 of file qgsvectorlayerfeatureiterator.cpp.
References addJoinedAttributes(), QgsFeature::attributes(), QgsFeatureRequest::flags(), QgsFeature::geometry(), QgsFeature::id(), QGis::Line, mEditGeometrySimplifier, mFetchJoinInfo, QgsVectorLayerFeatureSource::mFields, QgsAbstractFeatureIterator::mRequest, QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource >::mSource, QgsFeatureRequest::NoGeometry, QGis::Polygon, QgsFeature::setAttributes(), QgsFeature::setFeatureId(), QgsFeature::setFields(), QgsFeature::setGeometry(), QgsFeature::setValid(), QgsAbstractGeometrySimplifier::simplifyGeometry(), and QgsGeometry::type().
Referenced by fetchNextAddedFeature(), and nextFeatureFid().
|
protected |
Definition at line 370 of file qgsvectorlayerfeatureiterator.cpp.
References addJoinedAttributes(), QgsFeature::attributes(), QgsFeatureRequest::flags(), QgsFeature::geometry(), QgsAbstractFeatureSource::getFeatures(), QGis::Line, mEditGeometrySimplifier, mFetchJoinInfo, QgsVectorLayerFeatureSource::mFields, QgsVectorLayerFeatureSource::mProviderFeatureSource, mProviderRequest, QgsAbstractFeatureIterator::mRequest, QgsAbstractFeatureIteratorFromSource< QgsVectorLayerFeatureSource >::mSource, QgsFeatureIterator::nextFeature(), QgsFeatureRequest::NoGeometry, QGis::Polygon, QgsFeature::setAttributes(), QgsFeature::setFeatureId(), QgsFeature::setFields(), QgsFeatureRequest::setFilterFid(), QgsFeatureRequest::setFlags(), QgsFeature::setGeometry(), QgsFeatureRequest::setSubsetOfAttributes(), QgsFeature::setValid(), QgsAbstractGeometrySimplifier::simplifyGeometry(), QgsFeatureRequest::SubsetOfAttributes, QgsFeatureRequest::subsetOfAttributes(), QgsGeometry::type(), and updateChangedAttributes().
Referenced by fetchNextChangedGeomFeature(), and nextFeatureFid().
|
protected |
Definition at line 95 of file qgsvectorlayerfeatureiterator.h.
Referenced by fetchFeature(), fetchNextChangedAttributeFeature(), and QgsVectorLayerFeatureIterator().
|
protected |
Definition at line 94 of file qgsvectorlayerfeatureiterator.h.
Referenced by QgsVectorLayerFeatureIterator().
|
private |
optional object to locally simplify edited (changed or added) geometries fetched by this feature iterator
Definition at line 143 of file qgsvectorlayerfeatureiterator.h.
Referenced by prepareSimplification(), useAddedFeature(), useChangedAttributeFeature(), and ~QgsVectorLayerFeatureIterator().
|
protected |
Definition at line 101 of file qgsvectorlayerfeatureiterator.h.
Referenced by fetchNextAddedFeature(), and rewindEditBuffer().
|
protected |
Definition at line 100 of file qgsvectorlayerfeatureiterator.h.
Referenced by fetchNextChangedGeomFeature(), and rewindEditBuffer().
|
protected |
Definition at line 99 of file qgsvectorlayerfeatureiterator.h.
Referenced by fetchFeature(), fetchNextAddedFeature(), fetchNextChangedAttributeFeature(), fetchNextChangedGeomFeature(), and rewindEditBuffer().
|
protected |
Definition at line 103 of file qgsvectorlayerfeatureiterator.h.
Referenced by fetchFeature(), QgsVectorLayerFeatureIterator(), and rewind().
|
protected |
information about joins used in the current select() statement.
Allows faster mapping of attribute ids compared to mVectorJoins
Definition at line 139 of file qgsvectorlayerfeatureiterator.h.
Referenced by addJoinedAttributes(), fetchFeature(), fetchNextChangedAttributeFeature(), nextFeatureFid(), prepareJoins(), useAddedFeature(), and useChangedAttributeFeature().
|
protected |
Definition at line 93 of file qgsvectorlayerfeatureiterator.h.
Referenced by close(), fetchFeature(), QgsVectorLayerFeatureIterator(), and rewind().
|
protected |
Definition at line 92 of file qgsvectorlayerfeatureiterator.h.
Referenced by fetchFeature(), nextFeatureFid(), QgsVectorLayerFeatureIterator(), and useChangedAttributeFeature().