QGIS API Documentation 3.39.0-Master (8f1a6e30482)
Loading...
Searching...
No Matches
qgsnativealgorithms.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsnativealgorithms.cpp
3 ---------------------
4 begin : April 2017
5 copyright : (C) 2017 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#include "qgsnativealgorithms.h"
19#include "qgsruntimeprofiler.h"
31#include "qgsalgorithmaspect.h"
39#include "qgsalgorithmbuffer.h"
45#include "qgsalgorithmclip.h"
65#include "qgsalgorithmdrape.h"
75#include "qgsalgorithmexplode.h"
95#include "qgsalgorithmfilter.h"
100#include "qgsalgorithmforcerhr.h"
104#if QT_CONFIG(process)
106#endif
107#include "qgsalgorithmgrid.h"
141#include "qgsalgorithmpackage.h"
184#include "qgsalgorithmrotate.h"
189#include "qgsalgorithmsavelog.h"
203#include "qgsalgorithmsimplify.h"
205#include "qgsalgorithmslope.h"
206#include "qgsalgorithmsmooth.h"
219#include "qgsalgorithmswapxy.h"
223#include "qgsalgorithmtransect.h"
227#include "qgsalgorithmunion.h"
236#include "qgsalgorithmxyztiles.h"
243#include "qgsstylealgorithms.h"
244
246
248 : QgsProcessingProvider( parent )
249{}
250
251QIcon QgsNativeAlgorithms::icon() const
252{
253 return QgsApplication::getThemeIcon( QStringLiteral( "/providerQgis.svg" ) );
254}
255
257{
258 return QgsApplication::iconPath( QStringLiteral( "providerQgis.svg" ) );
259}
260
261QString QgsNativeAlgorithms::id() const
262{
263 return QStringLiteral( "native" );
264}
265
266QString QgsNativeAlgorithms::helpId() const
267{
268 return QStringLiteral( "qgis" );
269}
270
271QString QgsNativeAlgorithms::name() const
272{
273 return tr( "QGIS (native c++)" );
274}
275
277{
278 return true;
279}
280
282{
284}
285
287{
288 const QgsScopedRuntimeProfile profile( QObject::tr( "QGIS native provider" ) );
289 addAlgorithm( new QgsAddIncrementalFieldAlgorithm() );
290 addAlgorithm( new QgsAddTableFieldAlgorithm() );
291 addAlgorithm( new QgsAddXYFieldsAlgorithm() );
292 addAlgorithm( new QgsAddUniqueValueIndexAlgorithm() );
293 addAlgorithm( new QgsAffineTransformationAlgorithm() );
294 addAlgorithm( new QgsAggregateAlgorithm() );
295 addAlgorithm( new QgsAlignRastersAlgorithm() );
296 addAlgorithm( new QgsAlignSingleRasterAlgorithm() );
297 addAlgorithm( new QgsAngleToNearestAlgorithm() );
298 addAlgorithm( new QgsApplyLayerStyleAlgorithm() );
299 addAlgorithm( new QgsArrayTranslatedFeaturesAlgorithm() );
300 addAlgorithm( new QgsAspectAlgorithm() );
301 addAlgorithm( new QgsAssignProjectionAlgorithm() );
302 addAlgorithm( new QgsAttributeIndexAlgorithm() );
303 addAlgorithm( new QgsB3DMToGltfAlgorithm() );
304 addAlgorithm( new QgsBasicStatisticsAlgorithm() );
305 addAlgorithm( new QgsBatchNominatimGeocodeAlgorithm() );
306 addAlgorithm( new QgsBookmarksToLayerAlgorithm() );
307 addAlgorithm( new QgsBoundaryAlgorithm() );
308 addAlgorithm( new QgsBoundingBoxAlgorithm() );
309 addAlgorithm( new QgsBufferAlgorithm() );
310 addAlgorithm( new QgsCalculateExpressionAlgorithm() );
311 addAlgorithm( new QgsCalculateVectorOverlapsAlgorithm() );
312 addAlgorithm( new QgsCategorizeUsingStyleAlgorithm() );
313 addAlgorithm( new QgsCellStatisticsAlgorithm() );
314 addAlgorithm( new QgsCellStatisticsPercentileAlgorithm() );
315 addAlgorithm( new QgsCellStatisticsPercentRankFromRasterAlgorithm() );
316 addAlgorithm( new QgsCellStatisticsPercentRankFromValueAlgorithm() );
317 addAlgorithm( new QgsCentroidAlgorithm() );
318 addAlgorithm( new QgsClipAlgorithm() );
319 addAlgorithm( new QgsCollectAlgorithm() );
320 addAlgorithm( new QgsCombineStylesAlgorithm() );
321 addAlgorithm( new QgsConcaveHullAlgorithm() );
322 addAlgorithm( new QgsConditionalBranchAlgorithm() );
323 addAlgorithm( new QgsConstantRasterAlgorithm() );
324 addAlgorithm( new QgsConvertToCurvesAlgorithm() );
325 addAlgorithm( new QgsConvexHullAlgorithm() );
326 addAlgorithm( new QgsCoverageSimplifyAlgorithm() );
327 addAlgorithm( new QgsCoverageUnionAlgorithm() );
328 addAlgorithm( new QgsCoverageValidateAlgorithm() );
329 addAlgorithm( new QgsCreateDirectoryAlgorithm() );
330 addAlgorithm( new QgsDbscanClusteringAlgorithm() );
331 addAlgorithm( new QgsDelaunayTriangulationAlgorithm() );
332 addAlgorithm( new QgsDeleteDuplicateGeometriesAlgorithm() );
333 addAlgorithm( new QgsDetectVectorChangesAlgorithm() );
334 addAlgorithm( new QgsDifferenceAlgorithm() );
335 addAlgorithm( new QgsDissolveAlgorithm() );
336 addAlgorithm( new QgsDownloadVectorTilesAlgorithm() );
337 addAlgorithm( new QgsDrapeToMAlgorithm() );
338 addAlgorithm( new QgsDrapeToZAlgorithm() );
339 addAlgorithm( new QgsDropTableFieldsAlgorithm() );
340 addAlgorithm( new QgsDropGeometryAlgorithm() );
341 addAlgorithm( new QgsDropMZValuesAlgorithm() );
342 addAlgorithm( new QgsDxfExportAlgorithm() );
343 addAlgorithm( new QgsExecutePostgisQueryAlgorithm() );
344 addAlgorithm( new QgsExecuteRegisteredSpatialiteQueryAlgorithm() );
345 addAlgorithm( new QgsExecuteSpatialiteQueryAlgorithm() );
346 addAlgorithm( new QgsExplodeAlgorithm() );
347 addAlgorithm( new QgsExplodeHstoreAlgorithm() );
348 addAlgorithm( new QgsExportLayersInformationAlgorithm() );
349 addAlgorithm( new QgsExportMeshVerticesAlgorithm );
350 addAlgorithm( new QgsExportMeshFacesAlgorithm );
351 addAlgorithm( new QgsExportMeshEdgesAlgorithm );
352 addAlgorithm( new QgsExportMeshOnGridAlgorithm );
353 addAlgorithm( new QgsExportToPostgresqlAlgorithm );
354 addAlgorithm( new QgsExportToSpreadsheetAlgorithm() );
355 addAlgorithm( new QgsExtendLinesAlgorithm() );
356 addAlgorithm( new QgsExtentFromLayerAlgorithm() );
357 addAlgorithm( new QgsExtentToLayerAlgorithm() );
358 addAlgorithm( new QgsExtractBinaryFieldAlgorithm() );
359 addAlgorithm( new QgsExtractByAttributeAlgorithm() );
360 addAlgorithm( new QgsExtractByExpressionAlgorithm() );
361 addAlgorithm( new QgsExtractByExtentAlgorithm() );
362 addAlgorithm( new QgsExtractByLocationAlgorithm() );
363 addAlgorithm( new QgsExtractLabelsAlgorithm() );
364 addAlgorithm( new QgsExtractMValuesAlgorithm() );
365 addAlgorithm( new QgsExtractVerticesAlgorithm() );
366 addAlgorithm( new QgsExtractSpecificVerticesAlgorithm() );
367 addAlgorithm( new QgsExtractWithinDistanceAlgorithm() );
368 addAlgorithm( new QgsExtractZValuesAlgorithm() );
369 addAlgorithm( new QgsFieldCalculatorAlgorithm() );
370 addAlgorithm( new QgsFileDownloaderAlgorithm() );
371 addAlgorithm( new QgsFillNoDataAlgorithm() );
372 addAlgorithm( new QgsFilterAlgorithm() );
373 addAlgorithm( new QgsFilterByGeometryAlgorithm() );
374 addAlgorithm( new QgsFilterByLayerTypeAlgorithm() );
375 addAlgorithm( new QgsFilterVerticesByM() );
376 addAlgorithm( new QgsFilterVerticesByZ() );
377 addAlgorithm( new QgsFixGeometriesAlgorithm() );
378 addAlgorithm( new QgsFlattenRelationshipsAlgorithm() );
379 addAlgorithm( new QgsForceRHRAlgorithm() );
380 addAlgorithm( new QgsFuzzifyRasterLinearMembershipAlgorithm() );
381 addAlgorithm( new QgsFuzzifyRasterPowerMembershipAlgorithm() );
382 addAlgorithm( new QgsFuzzifyRasterLargeMembershipAlgorithm() );
383 addAlgorithm( new QgsFuzzifyRasterSmallMembershipAlgorithm() );
384 addAlgorithm( new QgsFuzzifyRasterGaussianMembershipAlgorithm() );
385 addAlgorithm( new QgsFuzzifyRasterNearMembershipAlgorithm() );
386 addAlgorithm( new QgsGeometryByExpressionAlgorithm() );
387 addAlgorithm( new QgsGltfToVectorFeaturesAlgorithm() );
388#if QT_CONFIG(process)
389 addAlgorithm( new QgsConvertGpxFeatureTypeAlgorithm() );
390 addAlgorithm( new QgsConvertGpsDataAlgorithm() );
391 addAlgorithm( new QgsDownloadGpsDataAlgorithm() );
392 addAlgorithm( new QgsUploadGpsDataAlgorithm() );
393#endif
394 addAlgorithm( new QgsGridAlgorithm() );
395 addAlgorithm( new QgsHillshadeAlgorithm() );
396 addAlgorithm( new QgsImportPhotosAlgorithm() );
397 addAlgorithm( new QgsInterpolatePointAlgorithm() );
398 addAlgorithm( new QgsIntersectionAlgorithm() );
399 addAlgorithm( new QgsJoinByAttributeAlgorithm() );
400 addAlgorithm( new QgsJoinByLocationAlgorithm() );
401 addAlgorithm( new QgsJoinByLocationSummaryAlgorithm() );
402 addAlgorithm( new QgsJoinByNearestAlgorithm() );
403 addAlgorithm( new QgsJoinWithLinesAlgorithm() );
404 addAlgorithm( new QgsKeepNBiggestPartsAlgorithm() );
405 addAlgorithm( new QgsKMeansClusteringAlgorithm() );
406 addAlgorithm( new QgsLayerToBookmarksAlgorithm() );
407 addAlgorithm( new QgsLayoutMapExtentToLayerAlgorithm() );
408 addAlgorithm( new QgsLayoutAtlasToImageAlgorithm() );
409 addAlgorithm( new QgsLayoutAtlasToPdfAlgorithm() );
410 addAlgorithm( new QgsLayoutAtlasToMultiplePdfAlgorithm() );
411 addAlgorithm( new QgsLayoutToImageAlgorithm() );
412 addAlgorithm( new QgsLayoutToPdfAlgorithm() );
413 addAlgorithm( new QgsLineDensityAlgorithm() );
414 addAlgorithm( new QgsLineIntersectionAlgorithm() );
415 addAlgorithm( new QgsLineSubstringAlgorithm() );
416 addAlgorithm( new QgsLoadLayerAlgorithm() );
417 addAlgorithm( new QgsMeanCoordinatesAlgorithm() );
418 addAlgorithm( new QgsMergeLinesAlgorithm() );
419 addAlgorithm( new QgsMergeVectorAlgorithm() );
420 addAlgorithm( new QgsMeshRasterizeAlgorithm );
421 addAlgorithm( new QgsMeshContoursAlgorithm );
422 addAlgorithm( new QgsMeshExportCrossSection );
423 addAlgorithm( new QgsMeshExportTimeSeries );
424 addAlgorithm( new QgsMinimumEnclosingCircleAlgorithm() );
425 addAlgorithm( new QgsMultiDifferenceAlgorithm() );
426 addAlgorithm( new QgsMultiIntersectionAlgorithm() );
427 addAlgorithm( new QgsMultipartToSinglepartAlgorithm() );
428 addAlgorithm( new QgsMultiRingConstantBufferAlgorithm() );
429 addAlgorithm( new QgsMultiUnionAlgorithm() );
430 addAlgorithm( new QgsNearestNeighbourAnalysisAlgorithm() );
431 addAlgorithm( new QgsOffsetLinesAlgorithm() );
432 addAlgorithm( new QgsOrderByExpressionAlgorithm() );
433 addAlgorithm( new QgsOrientedMinimumBoundingBoxAlgorithm() );
434 addAlgorithm( new QgsOrthogonalizeAlgorithm() );
435 addAlgorithm( new QgsPackageAlgorithm() );
436 addAlgorithm( new QgsPixelCentroidsFromPolygonsAlgorithm() );
437 addAlgorithm( new QgsCreateArrayOffsetLinesAlgorithm() );
438 addAlgorithm( new QgsPointsInPolygonAlgorithm() );
439 addAlgorithm( new QgsPointOnSurfaceAlgorithm() );
440 addAlgorithm( new QgsPointToLayerAlgorithm() );
441 addAlgorithm( new QgsPointsAlongGeometryAlgorithm() );
442 addAlgorithm( new QgsPointsLayerFromTableAlgorithm() );
443 addAlgorithm( new QgsPointsToPathsAlgorithm() );
444 addAlgorithm( new QgsPoleOfInaccessibilityAlgorithm() );
445 addAlgorithm( new QgsPolygonizeAlgorithm() );
446 addAlgorithm( new QgsProjectPointCartesianAlgorithm() );
447 addAlgorithm( new QgsPromoteToMultipartAlgorithm() );
448 addAlgorithm( new QgsRaiseExceptionAlgorithm() );
449 addAlgorithm( new QgsRaiseWarningAlgorithm() );
450 addAlgorithm( new QgsRaiseMessageAlgorithm() );
451 addAlgorithm( new QgsRandomBinomialRasterAlgorithm() );
452 addAlgorithm( new QgsRandomExponentialRasterAlgorithm() );
453 addAlgorithm( new QgsRandomExtractAlgorithm() );
454 addAlgorithm( new QgsRandomGammaRasterAlgorithm() );
455 addAlgorithm( new QgsRandomGeometricRasterAlgorithm() );
456 addAlgorithm( new QgsRandomNegativeBinomialRasterAlgorithm() );
457 addAlgorithm( new QgsRandomNormalRasterAlgorithm() );
458 addAlgorithm( new QgsRandomPointsExtentAlgorithm() );
459 addAlgorithm( new QgsRandomPointsInPolygonsAlgorithm() );
460 addAlgorithm( new QgsRandomPointsOnLinesAlgorithm() );
461 addAlgorithm( new QgsRandomPoissonRasterAlgorithm() );
462 addAlgorithm( new QgsRandomUniformRasterAlgorithm() );
463 addAlgorithm( new QgsRasterCalculatorAlgorithm() );
464 addAlgorithm( new QgsRasterCalculatorModelerAlgorithm() );
465 addAlgorithm( new QgsRasterDtmSlopeBasedFilterAlgorithm() );
466 addAlgorithm( new QgsRasterFrequencyByEqualOperatorAlgorithm() );
467 addAlgorithm( new QgsRasterFrequencyByGreaterThanOperatorAlgorithm() );
468 addAlgorithm( new QgsRasterFrequencyByLessThanOperatorAlgorithm() );
469 addAlgorithm( new QgsRasterLayerPropertiesAlgorithm() );
470 addAlgorithm( new QgsRasterLayerUniqueValuesReportAlgorithm() );
471 addAlgorithm( new QgsRasterLayerZonalStatsAlgorithm() );
472 addAlgorithm( new QgsRasterLogicalAndAlgorithm() );
473 addAlgorithm( new QgsRasterLogicalOrAlgorithm() );
474 addAlgorithm( new QgsRasterizeAlgorithm() );
475 addAlgorithm( new QgsRasterPixelsToPointsAlgorithm() );
476 addAlgorithm( new QgsRasterPixelsToPolygonsAlgorithm() );
477 addAlgorithm( new QgsRasterSamplingAlgorithm() );
478 addAlgorithm( new QgsRasterStackHighestPositionAlgorithm() );
479 addAlgorithm( new QgsRasterStackLowestPositionAlgorithm() );
480 addAlgorithm( new QgsRasterStatisticsAlgorithm() );
481 addAlgorithm( new QgsRasterSurfaceVolumeAlgorithm() );
482 addAlgorithm( new QgsAlgorithmRemoveDuplicateVertices() );
483 addAlgorithm( new QgsReclassifyByLayerAlgorithm() );
484 addAlgorithm( new QgsReclassifyByTableAlgorithm() );
485 addAlgorithm( new QgsRectanglesOvalsDiamondsAlgorithm() );
486 addAlgorithm( new QgsRefactorFieldsAlgorithm() );
487 addAlgorithm( new QgsRemoveDuplicatesByAttributeAlgorithm() );
488 addAlgorithm( new QgsRemoveHolesAlgorithm() );
489 addAlgorithm( new QgsRemoveNullGeometryAlgorithm() );
490 addAlgorithm( new QgsRenameLayerAlgorithm() );
491 addAlgorithm( new QgsRenameTableFieldAlgorithm() );
492 addAlgorithm( new QgsRepairShapefileAlgorithm() );
493 addAlgorithm( new QgsRescaleRasterAlgorithm() );
494 addAlgorithm( new QgsRetainTableFieldsAlgorithm() );
495 addAlgorithm( new QgsReverseLineDirectionAlgorithm() );
496 addAlgorithm( new QgsRotateFeaturesAlgorithm() );
497 addAlgorithm( new QgsRoundnessAlgorithm() );
498 addAlgorithm( new QgsRoundRasterValuesAlgorithm() );
499 addAlgorithm( new QgsRuggednessAlgorithm() );
500 addAlgorithm( new QgsSaveFeaturesAlgorithm() );
501 addAlgorithm( new QgsSaveLogToFileAlgorithm() );
502 addAlgorithm( new QgsSaveSelectedFeatures() );
503 addAlgorithm( new QgsSegmentizeByMaximumAngleAlgorithm() );
504 addAlgorithm( new QgsSegmentizeByMaximumDistanceAlgorithm() );
505 addAlgorithm( new QgsSelectByLocationAlgorithm() );
506 addAlgorithm( new QgsSelectWithinDistanceAlgorithm() );
507 addAlgorithm( new QgsServiceAreaFromLayerAlgorithm() );
508 addAlgorithm( new QgsServiceAreaFromPointAlgorithm() );
509 addAlgorithm( new QgsSetLayerEncodingAlgorithm() );
510 addAlgorithm( new QgsSetMValueAlgorithm() );
511 addAlgorithm( new QgsSetProjectVariableAlgorithm() );
512 addAlgorithm( new QgsSetZValueAlgorithm() );
513 addAlgorithm( new QgsShapefileEncodingInfoAlgorithm() );
514 addAlgorithm( new QgsShortestLineAlgorithm() );
515 addAlgorithm( new QgsShortestPathLayerToPointAlgorithm() );
516 addAlgorithm( new QgsShortestPathPointToLayerAlgorithm() );
517 addAlgorithm( new QgsShortestPathPointToPointAlgorithm() );
518 addAlgorithm( new QgsSimplifyAlgorithm() );
519 addAlgorithm( new QgsSingleSidedBufferAlgorithm() );
520 addAlgorithm( new QgsSlopeAlgorithm() );
521 addAlgorithm( new QgsSmoothAlgorithm() );
522 addAlgorithm( new QgsSnapGeometriesAlgorithm() );
523 addAlgorithm( new QgsSnapToGridAlgorithm() );
524 addAlgorithm( new QgsSpatialIndexAlgorithm() );
525 addAlgorithm( new QgsSplitFeaturesByAttributeCharacterAlgorithm() );
526 addAlgorithm( new QgsSplitGeometryAtAntimeridianAlgorithm() );
527 addAlgorithm( new QgsSplitLinesByLengthAlgorithm() );
528 addAlgorithm( new QgsSplitVectorLayerAlgorithm() );
529 addAlgorithm( new QgsSplitWithLinesAlgorithm() );
530 addAlgorithm( new QgsStDbscanClusteringAlgorithm() );
531 addAlgorithm( new QgsStringConcatenationAlgorithm() );
532 addAlgorithm( new QgsStyleFromProjectAlgorithm() );
533 addAlgorithm( new QgsSubdivideAlgorithm() );
534 addAlgorithm( new QgsSumLineLengthAlgorithm() );
535 addAlgorithm( new QgsSwapXYAlgorithm() );
536 addAlgorithm( new QgsSymmetricalDifferenceAlgorithm() );
537 addAlgorithm( new QgsTaperedBufferAlgorithm() );
538 addAlgorithm( new QgsTinMeshCreationAlgorithm() );
539 addAlgorithm( new QgsTransectAlgorithm() );
540 addAlgorithm( new QgsTransferAnnotationsFromMainAlgorithm() );
541 addAlgorithm( new QgsTransformAlgorithm() );
542 addAlgorithm( new QgsTranslateAlgorithm() );
543 addAlgorithm( new QgsTruncateTableAlgorithm() );
544 addAlgorithm( new QgsUnionAlgorithm() );
545 addAlgorithm( new QgsOpenUrlAlgorithm() );
546 addAlgorithm( new QgsHttpRequestAlgorithm() );
547 addAlgorithm( new QgsVariableWidthBufferByMAlgorithm() );
548 addAlgorithm( new QgsVirtualRasterCalculatorAlgorithm() );
549 addAlgorithm( new QgsVirtualRasterCalculatorModelerAlgorithm() );
550 addAlgorithm( new QgsVoronoiPolygonsAlgorithm() );
551 addAlgorithm( new QgsWedgeBuffersAlgorithm() );
552 addAlgorithm( new QgsWriteVectorTilesXyzAlgorithm() );
553 addAlgorithm( new QgsWriteVectorTilesMbtilesAlgorithm() );
554 addAlgorithm( new QgsXyzTilesDirectoryAlgorithm() );
555 addAlgorithm( new QgsXyzTilesMbtilesAlgorithm() );
556 addAlgorithm( new QgsZonalHistogramAlgorithm() );
557 addAlgorithm( new QgsZonalStatisticsAlgorithm() );
558 addAlgorithm( new QgsZonalStatisticsFeatureBasedAlgorithm() );
559 addAlgorithm( new QgsPolygonsToLinesAlgorithm() );
560 addAlgorithm( new QgsDensifyGeometriesByIntervalAlgorithm() );
561 addAlgorithm( new QgsDensifyGeometriesByCountAlgorithm() );
562}
563
@ CompatibleWithVirtualRaster
The processing provider's algorithms can work with QGIS virtualraster data provider.
QFlags< ProcessingProviderFlag > ProcessingProviderFlags
Flags indicating how and when an processing provider operates and should be exposed to users.
Definition qgis.h:3301
static QIcon getThemeIcon(const QString &name, const QColor &fillColor=QColor(), const QColor &strokeColor=QColor())
Helper to get a theme icon.
static QString iconPath(const QString &iconFile)
Returns path to the desired icon file.
void loadAlgorithms() override
Loads all algorithms belonging to this provider.
QString helpId() const override
Returns the provider help id string, used for creating QgsHelp urls for algorithms belong to this pro...
QString id() const override
Returns the unique provider id, used for identifying the provider.
bool supportsNonFileBasedOutput() const override
Returns true if the provider supports non-file based outputs (such as memory layers or direct databas...
QString svgIconPath() const override
Returns a path to an SVG version of the provider's icon.
QString name() const override
Returns the provider name, which is used to describe the provider within the GUI.
QIcon icon() const override
Returns an icon for the provider.
QgsNativeAlgorithms(QObject *parent=nullptr)
Constructor for QgsNativeAlgorithms.
Qgis::ProcessingProviderFlags flags() const override
Returns the flags indicating how and when the provider operates and should be exposed to users.
Abstract base class for processing providers.
bool addAlgorithm(QgsProcessingAlgorithm *algorithm)
Adds an algorithm to the provider.
Scoped object for logging of the runtime for a single operation or group of operations.