19#ifndef QgsVectorLayerCache_H 
   20#define QgsVectorLayerCache_H 
   27#include <unordered_set> 
   56    class CORE_EXPORT QgsCachedFeature
 
   70          , mAllAttributesFetched( allAttributesFetched )
 
   71          , mGeometryFetched( geometryFetched )
 
   73          mFeature = std::make_unique<QgsFeature>( feat );
 
   80          mCache->featureRemoved( mFeature->id() );
 
   84        inline const QgsFeature *feature() { 
return mFeature.get(); }
 
   86        bool allAttributesFetched() 
const;
 
   88        bool geometryFetched() 
const;
 
   91        std::unique_ptr<QgsFeature> mFeature;
 
   93        bool mAllAttributesFetched = 
true;
 
   94        bool mGeometryFetched = 
false;
 
   97        Q_DISABLE_COPY( QgsCachedFeature )
 
  110    void setCacheSize( 
int cacheSize );
 
  127    void setCacheGeometry( 
bool cacheGeometry );
 
  158    void setCacheAddedAttributes( 
bool cacheAddedAttributes );
 
  173    void setFullCache( 
bool fullCache );
 
  327    sipRes = sipCpp->featureCount();
 
  331    int __bool__() 
const;
 
  341    long long featureCount() 
const;
 
  425    void onAttributeValueChanged( 
QgsFeatureId fid, 
int field, 
const QVariant &value );
 
  426    void onJoinAttributeValueChanged( 
QgsFeatureId fid, 
int field, 
const QVariant &value );
 
  429    void attributeAdded( 
int field );
 
  430    void attributeDeleted( 
int field );
 
  437    void connectJoinedLayers() 
const;
 
  439    inline void cacheFeature( 
QgsFeature &feat, 
bool allAttributesFetched, 
bool geometryFetched = 
false )
 
  441      QgsCachedFeature *cachedFeature = 
new QgsCachedFeature( feat, 
this, allAttributesFetched, geometryFetched || mCacheGeometry );
 
  442      mCache.insert( feat.
id(), cachedFeature );
 
  443      if ( mCacheUnorderedKeys.find( feat.
id() ) == mCacheUnorderedKeys.end() )
 
  445        mCacheUnorderedKeys.insert( feat.
id() );
 
  446        mCacheOrderedKeys.emplace_back( feat.
id() );
 
  451    QCache< QgsFeatureId, QgsCachedFeature > mCache;
 
  456    std::unordered_set< QgsFeatureId > mCacheUnorderedKeys;
 
  457    std::deque< QgsFeatureId > mCacheOrderedKeys;
 
  459    bool mCacheGeometry = 
true;
 
  460    bool mFullCache = 
false;
 
  461    QList<QgsAbstractCacheIndex *> mCacheIndices;
 
  467    friend class QgsCachedFeature;
 
  479    friend class TestVectorLayerCache;
 
 
WkbType
The WKB type describes the number of dimensions a geometry has.
 
Abstract base class for cache indices.
 
Delivers features from the cache.
 
Uses another iterator as backend and writes features to the cache.
 
Represents a coordinate reference system (CRS).
 
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).
 
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
 
Container of fields for a vector layer.
 
A geometry is the spatial representation of a feature.
 
A rectangle specified with double values.
 
Caches features for a given QgsVectorLayer.
 
bool hasFullCache() const
Returns true if the cache is complete, ie it contains all features.
 
QgsFeatureIterator getFeatures(const QString &expression)
Query the layer for features matching a given expression.
 
void finished()
When filling the cache, this signal gets emitted once the cache is fully initialized.
 
void invalidated()
The cache has been invalidated and cleared.
 
QgsFeatureIterator getFeatures(const QgsRectangle &rectangle)
Query the layer for the features which intersect the specified rectangle.
 
void featureAdded(QgsFeatureId fid)
Emitted when a new feature has been added to the layer and this cache.
 
QgsFeatureIterator getFeatures(const QgsFeatureIds &fids)
Query the layer for the features with the given ids.
 
QgsFeature getFeature(QgsFeatureId fid)
Query the layer for the feature with the given id.
 
void cachedLayerDeleted()
Is emitted when the cached layer is deleted.
 
void attributeValueChanged(QgsFeatureId fid, int field, const QVariant &value)
Emitted when an attribute is changed.
 
void progress(int i, bool &cancel)
When filling the cache, this signal gets emitted periodically to notify about the progress and to be ...
 
bool cacheGeometry() const
Returns true if the cache will fetch and cache feature geometries.
 
Represents a vector layer which manages a vector based dataset.
 
QSet< QgsFeatureId > QgsFeatureIds
 
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features
 
QList< int > QgsAttributeList