mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-10-31 00:06:02 -04: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;
 | |
| };
 |