13#ifndef GDALALG_MATERIALIZE_INCLUDED
14#define GDALALG_MATERIALIZE_INCLUDED
16#include "gdalalg_abstract_pipeline.h"
17#include "gdalalg_raster_pipeline.h"
18#include "gdalalg_vector_pipeline.h"
26template <
class BaseStepAlgorithm,
int nDatasetType>
27class GDALMaterializeStepAlgorithm
28 :
public BaseStepAlgorithm
31 static constexpr const char *NAME =
"materialize";
32 static constexpr const char *DESCRIPTION =
33 "Materialize a piped dataset on disk to increase the efficiency of the "
36 static constexpr const char *ARG_NAME_REOPEN_AND_DO_NOT_EARLY_DELETE =
37 "reopen-and-do-not-early-delete";
39 bool IsNativelyStreamingCompatible()
const override
44 bool GeneratesFilesFromUserInput()
const override
46 return !this->m_outputDataset.GetName().empty();
50 explicit GDALMaterializeStepAlgorithm(
const char *helpURL);
52 int GetInputType()
const override
57 int GetOutputType()
const override
62 bool m_reopenAndDoNotEarlyDelete =
false;
69template <
class BaseStepAlgorithm,
int nDatasetType>
70GDALMaterializeStepAlgorithm<BaseStepAlgorithm, nDatasetType>::
71 GDALMaterializeStepAlgorithm(
const char *helpURL)
72 : BaseStepAlgorithm(NAME, DESCRIPTION, helpURL,
73 GDALPipelineStepAlgorithm::ConstructorOptions()
74 .SetAddDefaultArguments(false))
82class GDALMaterializeRasterAlgorithm final
83 :
public GDALMaterializeStepAlgorithm<GDALRasterPipelineStepAlgorithm,
87 static constexpr const char *HELP_URL =
88 "/programs/gdal_raster_materialize.html";
90 GDALMaterializeRasterAlgorithm();
93 bool RunStep(GDALPipelineStepRunContext &ctxt)
override;
100class GDALMaterializeVectorAlgorithm final
101 :
public GDALMaterializeStepAlgorithm<GDALVectorPipelineStepAlgorithm,
105 static constexpr const char *HELP_URL =
106 "/programs/gdal_vector_materialize.html";
108 GDALMaterializeVectorAlgorithm();
111 bool RunStep(GDALPipelineStepRunContext &ctxt)
override;