mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-11-04 00:04:25 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			105 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
class QgsAbstractFeatureIterator
 | 
						|
{
 | 
						|
%TypeHeaderCode
 | 
						|
#include <qgsfeatureiterator.h>
 | 
						|
%End
 | 
						|
  public:
 | 
						|
    //! base class constructor - stores the iteration parameters
 | 
						|
    QgsAbstractFeatureIterator( const QgsFeatureRequest& request );
 | 
						|
 | 
						|
    //! destructor makes sure that the iterator is closed properly
 | 
						|
    virtual ~QgsAbstractFeatureIterator();
 | 
						|
 | 
						|
    //! fetch next feature, return true on success
 | 
						|
    virtual bool nextFeature( QgsFeature& f );
 | 
						|
 | 
						|
    //! reset the iterator to the starting position
 | 
						|
    virtual bool rewind() = 0;
 | 
						|
    //! end of iterating: free the resources / lock
 | 
						|
    virtual bool close() = 0;
 | 
						|
 | 
						|
  protected:
 | 
						|
    /**
 | 
						|
     * If you write a feature iterator for your provider, this is the method you
 | 
						|
     * need to implement!!
 | 
						|
     *
 | 
						|
     * @param f The feature to write to
 | 
						|
     * @return  true if a feature was written to f
 | 
						|
     */
 | 
						|
    virtual bool fetchFeature( QgsFeature& f ) = 0;
 | 
						|
 | 
						|
    /**
 | 
						|
     * By default, the iterator will fetch all features and check if the feature
 | 
						|
     * matches the expression.
 | 
						|
     * If you have a more sophisticated metodology (SQL request for the features...)
 | 
						|
     * and you check for the expression in your fetchFeature method, you can just
 | 
						|
     * redirect this call to fetchFeature so the default check will be omitted.
 | 
						|
     *
 | 
						|
     * @param f The feature to write to
 | 
						|
     * @return  true if a feature was written to f
 | 
						|
     */
 | 
						|
    virtual bool nextFeatureFilterExpression( QgsFeature &f );
 | 
						|
 | 
						|
    /**
 | 
						|
     * By default, the iterator will fetch all features and check if the id
 | 
						|
     * is in the request.
 | 
						|
     * If you have a more sophisticated metodology (SQL request for the features...)
 | 
						|
     * and you are sure, that any feature you return from fetchFeature will match
 | 
						|
     * if the request was FilterFids you can just redirect this call to fetchFeature
 | 
						|
     * so the default check will be omitted.
 | 
						|
     *
 | 
						|
     * @param f The feature to write to
 | 
						|
     * @return  true if a feature was written to f
 | 
						|
     */
 | 
						|
    virtual bool nextFeatureFilterFids( QgsFeature & f );
 | 
						|
 | 
						|
    void ref(); //!< add reference
 | 
						|
    void deref(); //!< remove reference, delete if refs == 0
 | 
						|
 | 
						|
    //! Setup the simplification of geometries to fetch using the specified simplify method
 | 
						|
    virtual bool prepareSimplification( const QgsSimplifyMethod& simplifyMethod );
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
class QgsFeatureIterator
 | 
						|
{
 | 
						|
%TypeHeaderCode
 | 
						|
#include <qgsfeatureiterator.h>
 | 
						|
%End
 | 
						|
 | 
						|
  public:
 | 
						|
    QgsFeatureIterator* __iter__();
 | 
						|
%MethodCode
 | 
						|
  sipRes = sipCpp;
 | 
						|
%End
 | 
						|
 | 
						|
  SIP_PYOBJECT __next__();
 | 
						|
%MethodCode
 | 
						|
  QgsFeature* f = new QgsFeature;
 | 
						|
  if (sipCpp->nextFeature(*f))
 | 
						|
    sipRes = sipConvertFromType(f, sipType_QgsFeature, Py_None);
 | 
						|
  else
 | 
						|
  {
 | 
						|
    delete f;
 | 
						|
    PyErr_SetString(PyExc_StopIteration,"");
 | 
						|
  }
 | 
						|
%End
 | 
						|
    //! construct invalid iterator
 | 
						|
    QgsFeatureIterator();
 | 
						|
    //! construct a valid iterator
 | 
						|
    // QgsFeatureIterator( QgsAbstractFeatureIterator* iter );
 | 
						|
    //! copy constructor copies the iterator, increases ref.count
 | 
						|
    QgsFeatureIterator( const QgsFeatureIterator& fi );
 | 
						|
    //! destructor deletes the iterator if it has no more references
 | 
						|
    ~QgsFeatureIterator();
 | 
						|
 | 
						|
    // QgsFeatureIterator& operator=(const QgsFeatureIterator& other);
 | 
						|
 | 
						|
    bool nextFeature( QgsFeature& f );
 | 
						|
    bool rewind();
 | 
						|
    bool close();
 | 
						|
 | 
						|
    //! find out whether the iterator is still valid or closed already
 | 
						|
    bool isClosed() const;
 | 
						|
};
 |