LCOV - code coverage report
Current view: top level - apps - gdalalg_vector_layer_algebra.h (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 6 6 100.0 %
Date: 2026-06-23 16:35:19 Functions: 4 4 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  GDAL
       4             :  * Purpose:  gdal "vector layer-algebra" subcommand
       5             :  * Author:   Even Rouault <even dot rouault at spatialys.com>
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 2025, Even Rouault <even dot rouault at spatialys.com>
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #ifndef GDALALG_VECTOR_LAYER_ALGEBRA_INCLUDED
      14             : #define GDALALG_VECTOR_LAYER_ALGEBRA_INCLUDED
      15             : 
      16             : #include "gdalvectorpipelinestepalgorithm.h"
      17             : 
      18             : #include <limits>
      19             : 
      20             : //! @cond Doxygen_Suppress
      21             : 
      22             : /************************************************************************/
      23             : /*                   GDALVectorLayerAlgebraAlgorithm                    */
      24             : /************************************************************************/
      25             : 
      26             : class GDALVectorLayerAlgebraAlgorithm /* non final */
      27             :     : public GDALVectorPipelineStepAlgorithm
      28             : {
      29             :   public:
      30             :     static constexpr const char *NAME = "layer-algebra";
      31             :     static constexpr const char *DESCRIPTION =
      32             :         "Perform algebraic operation between 2 layers.";
      33             :     static constexpr const char *HELP_URL =
      34             :         "/programs/gdal_vector_layer_algebra.html";
      35             : 
      36             :     explicit GDALVectorLayerAlgebraAlgorithm(bool standaloneStep = false);
      37             : 
      38           6 :     bool IsNativelyStreamingCompatible() const override
      39             :     {
      40           6 :         return false;
      41             :     }
      42             : 
      43             :     bool
      44             :     CanHandleNextStep(GDALPipelineStepAlgorithm *poNextStep) const override;
      45             : 
      46             :   private:
      47             :     std::string m_operation{};
      48             : 
      49             :     std::string m_inputLayerName{};
      50             :     GDALArgDatasetValue m_methodDataset{};
      51             :     std::string m_methodLayerName{};
      52             : 
      53             :     // Output arguments
      54             :     std::string m_geometryType{};
      55             : 
      56             :     std::string m_inputPrefix{};
      57             :     std::vector<std::string> m_inputFields{};
      58             :     bool m_noInputFields = false;
      59             :     bool m_allInputFields = false;
      60             : 
      61             :     std::string m_methodPrefix{};
      62             :     std::vector<std::string> m_methodFields{};
      63             :     bool m_noMethodFields = false;
      64             :     bool m_allMethodFields = false;
      65             : 
      66             :     bool RunStep(GDALPipelineStepRunContext &ctxt) override;
      67             :     bool RunImpl(GDALProgressFunc pfnProgress, void *pProgressData) override;
      68             : };
      69             : 
      70             : /************************************************************************/
      71             : /*              GDALVectorLayerAlgebraAlgorithmStandalone               */
      72             : /************************************************************************/
      73             : 
      74         156 : class GDALVectorLayerAlgebraAlgorithmStandalone final
      75             :     : public GDALVectorLayerAlgebraAlgorithm
      76             : {
      77             :   public:
      78          78 :     GDALVectorLayerAlgebraAlgorithmStandalone()
      79          78 :         : GDALVectorLayerAlgebraAlgorithm(/* standaloneStep = */ true)
      80             :     {
      81          78 :     }
      82             : 
      83             :     ~GDALVectorLayerAlgebraAlgorithmStandalone() override;
      84             : };
      85             : 
      86             : //! @endcond
      87             : 
      88             : #endif

Generated by: LCOV version 1.14