@@ -160,6 +160,59 @@ class QgsProcessingUtils
160160
161161};
162162
163+ class QgsProcessingFeatureSource : QgsFeatureSource
164+ {
165+ %Docstring
166+ QgsFeatureSource subclass which proxies methods to an underlying QgsFeatureSource, modifying
167+ results according to the settings in a QgsProcessingContext.
168+ .. versionadded:: 3.0
169+ %End
170+
171+ %TypeHeaderCode
172+ #include "qgsprocessingutils.h"
173+ %End
174+ public:
175+
176+ enum Flag
177+ {
178+ FlagSkipGeometryValidityChecks,
179+ };
180+ typedef QFlags<QgsProcessingFeatureSource::Flag> Flags;
181+
182+
183+ QgsProcessingFeatureSource( QgsFeatureSource *originalSource, const QgsProcessingContext &context, bool ownsOriginalSource = false );
184+ %Docstring
185+ Constructor for QgsProcessingFeatureSource, accepting an original feature source ``originalSource``
186+ and processing ``context``.
187+ Ownership of ``originalSource`` is dictated by ``ownsOriginalSource``. If ``ownsOriginalSource`` is false,
188+ ownership is not transferred, and callers must ensure that ``originalSource`` exists for the lifetime of this object.
189+ If ``ownsOriginalSource`` is true, then this object will take ownership of ``originalSource``.
190+ %End
191+
192+ ~QgsProcessingFeatureSource();
193+
194+ QgsFeatureIterator getFeatures( const QgsFeatureRequest &request, Flags flags ) const;
195+ %Docstring
196+ Returns an iterator for the features in the source, respecting the supplied feature ``flags``.
197+ An optional ``request`` can be used to optimise the returned
198+ iterator, eg by restricting the returned attributes or geometry.
199+ :rtype: QgsFeatureIterator
200+ %End
201+
202+ virtual QgsFeatureIterator getFeatures( const QgsFeatureRequest &request = QgsFeatureRequest() ) const;
203+
204+ virtual QgsCoordinateReferenceSystem sourceCrs() const;
205+
206+ virtual QgsFields fields() const;
207+
208+ virtual QgsWkbTypes::Type wkbType() const;
209+
210+ virtual long featureCount() const;
211+
212+ virtual QString sourceName() const;
213+
214+
215+ };
163216
164217
165218
0 commit comments