@@ -97,13 +97,38 @@ QgsGeometryCheckerUtils::LayerFeatures::iterator::iterator( const QStringList::c
97
97
nextLayerFeature ( true );
98
98
}
99
99
100
+ QgsGeometryCheckerUtils::LayerFeatures::iterator::iterator ( const QgsGeometryCheckerUtils::LayerFeatures::iterator &rh )
101
+ {
102
+ mLayerIt = rh.mLayerIt ;
103
+ mFeatureIt = rh.mFeatureIt ;
104
+ mParent = rh.mParent ;
105
+ mCurrentFeature = qgis::make_unique<LayerFeature>( *rh.mCurrentFeature .get () );
106
+ }
107
+
100
108
bool QgsGeometryCheckerUtils::LayerFeature::useMapCrs () const
101
109
{
102
110
return mMapCrs ;
103
111
}
104
112
QgsGeometryCheckerUtils::LayerFeatures::iterator::~iterator ()
105
113
{
106
- delete mCurrentFeature ;
114
+ }
115
+
116
+ QgsGeometryCheckerUtils::LayerFeatures::iterator QgsGeometryCheckerUtils::LayerFeatures::iterator::operator ++( int )
117
+ {
118
+ iterator tmp ( *this );
119
+ ++*this ;
120
+ return tmp;
121
+ }
122
+
123
+ const QgsGeometryCheckerUtils::LayerFeature &QgsGeometryCheckerUtils::LayerFeatures::iterator::operator *() const
124
+ {
125
+ Q_ASSERT ( mCurrentFeature );
126
+ return *mCurrentFeature ;
127
+ }
128
+
129
+ bool QgsGeometryCheckerUtils::LayerFeatures::iterator::operator !=( const QgsGeometryCheckerUtils::LayerFeatures::iterator &other )
130
+ {
131
+ return mLayerIt != other.mLayerIt || mFeatureIt != other.mFeatureIt ;
107
132
}
108
133
109
134
const QgsGeometryCheckerUtils::LayerFeatures::iterator &QgsGeometryCheckerUtils::LayerFeatures::iterator::operator ++()
@@ -127,8 +152,7 @@ bool QgsGeometryCheckerUtils::LayerFeatures::iterator::nextLayerFeature( bool be
127
152
}
128
153
// End
129
154
mFeatureIt = QgsFeatureIds::const_iterator ();
130
- delete mCurrentFeature ;
131
- mCurrentFeature = nullptr ;
155
+ mCurrentFeature .reset ();
132
156
return false ;
133
157
}
134
158
@@ -173,8 +197,7 @@ bool QgsGeometryCheckerUtils::LayerFeatures::iterator::nextFeature( bool begin )
173
197
QgsFeature feature;
174
198
if ( featurePool->getFeature ( *mFeatureIt , feature ) && feature.geometry () && feature.geometry ().constGet () )
175
199
{
176
- delete mCurrentFeature ;
177
- mCurrentFeature = new LayerFeature ( mParent ->mFeaturePools [*mLayerIt ], feature, mParent ->mContext , mParent ->mUseMapCrs );
200
+ mCurrentFeature .reset ( new LayerFeature ( mParent ->mFeaturePools [*mLayerIt ], feature, mParent ->mContext , mParent ->mUseMapCrs ) );
178
201
return true ;
179
202
}
180
203
++mFeatureIt ;
@@ -225,6 +248,16 @@ QgsGeometryCheckerUtils::LayerFeatures::LayerFeatures( const QMap<QString, QgsFe
225
248
}
226
249
}
227
250
251
+ QgsGeometryCheckerUtils::LayerFeatures::iterator QgsGeometryCheckerUtils::LayerFeatures::begin () const
252
+ {
253
+ return iterator ( mLayerIds .constBegin (), this );
254
+ }
255
+
256
+ QgsGeometryCheckerUtils::LayerFeatures::iterator QgsGeometryCheckerUtils::LayerFeatures::end () const
257
+ {
258
+ return iterator ( mLayerIds .end (), this );
259
+ }
260
+
228
261
// ///////////////////////////////////////////////////////////////////////////
229
262
230
263
std::unique_ptr<QgsGeometryEngine> QgsGeometryCheckerUtils::createGeomEngine ( const QgsAbstractGeometry *geometry, double tolerance )
0 commit comments