[gdal-dev] Bindings and typemaps
Ari Jolma
ari.jolma at gmail.com
Sun Mar 8 14:20:50 PDT 2015
Even,
It took me quite a while again to understand what goes on with Swig when
we %apply a typemap etc.
I think we could simplify the things quite a lot if we simply use
typedefs and then create typemaps for the return values.
For example CPLErr is never returned to the calling language (I think,
but it could in any case be defined by the language typemap), thus we
could simply define typemaps for it in language specific files instead
of repeating
%apply (IF_ERROR_RETURN_NONE) { (CPLErr) };
...
%clear (CPLErr);
in the include/*.i files.
Also sometimes GDAL has simple int instead of CPLErr, which is used as a
success/failure return value, then we could (like we already do) write
typedef int RETURN_NONE;
(actually we have also
typedef int OGRErr;
for SWIGCSHARP, which is invented for the same reason I assume)
and then define typemaps for the new type and skip again
%apply (IF_FALSE_RETURN_NONE) { (RETURN_NONE) };
...
%clear (RETURN_NONE);
which is overkill (and I believe I introduced that).
BTW, RETURN_NONE is not a good name, maybe use TRUE_OR_FALSE or
something more descriptive.
Best,
Ari
More information about the gdal-dev
mailing list