Re: outputting to MEM with the C API for CLI algorithms

Even Rouault via gdal-dev <[email protected]>
Newsgroups gmane.comp.gis.gdal.devel
Message-ID <[email protected]>
Chris,

the point was that with a MEM dataset, you need to fetch the dataset 
through the output argument handle, contrary to other file formats, or 
you can potentially open it by name after having finalized the algorithm.

The use of  GDALArgDatasetValueGetDatasetRef() in the example is to 
simplify things a bit, as consumption of the dataset in the example is 
done immediately, before GDALAlgorithmArgRelease(), so no need to play 
with dataset ref counting.

If you need the MEM dataset liftetime to exceed the one of the 
algorithm, then GDALArgDatasetValueGetDatasetIncreaseRefCount() paired 
with GDALReleaseDataset() is definitely the way to go.

Even

Le 18/04/2026 à 22:31, Chris Toney via gdal-dev a écrit :
> Hi,
> In "How to use gdal CLI algorithms from C"
> (https://gdal.org/en/latest/programs/gdal_cli_from_c.html):
>
>> When outputting to a MEM -- In Memory datasets dataset, you typically want to get the output dataset with:
>> GDALAlgorithmArgH hArg = GDALAlgorithmGetArg(hAlg, "output");
>> GDALArgDatasetValueH hVal = GDALAlgorithmArgGetAsDatasetValue(hArg);
>> GDALDatasetH hDS = GDALArgDatasetValueGetDatasetRef(hVal);
> But if we use GDALArgDatasetValueGetDatasetRef(hValue):
>
>> This does not modify the reference counter, hence the lifetime of the returned object is not guaranteed to exceed the one of hValue.
> Is there anything wrong with the following, if we want the lifetime of
> the returned object to exceed that of hValue?
>
> GDALDatasetH hDS = nullptr;
> hDS = GDALArgDatasetValueGetDatasetIncreaseRefCount(hArgDSValue);
> if (!hDS) {
>      GDALArgDatasetValueRelease(hArgDSValue);
>      // ...
> }
> // ...
> GDALArgDatasetValueRelease(hArgDSValue);
>
> and then continue using the MEM hDS?
>
> That's been working fine, but I'm wondering why the specific note in
> the tutorial about outputting to MEM in that way?
>
> Thanks.
>
> Chris
> _______________________________________________
> gdal-dev mailing list
> [email protected]
> https://lists.osgeo.org/mailman/listinfo/gdal-dev

-- 
http://www.spatialys.com
My software is free, but my time generally not.
Highly recommend OxiGDAL if you want to live in the 21th century and cure Bixonimania

_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.