[Gdal-dev] Bool vs int in bindings?

Howard Butler hobu at iastate.edu
Tue Apr 3 09:20:51 EDT 2007


Simon,

Regarding the booleans, I am pretty strongly against this idea  
because it would mean a lot of divergent maintenance for languages  
that *don't* support boolean types, and GDAL itself uses ints which  
would mean we would have to have language-specific coercion.  It  
seems like a lot of pain for little benefit.

Regarding renaming, I'm ok with proper namespaces and using enums,  
but language-specific renames to follow its language conventions  
seems like a road to hell paved with good intentions.  I agree that  
GDAL/OGR's swig bindings are indeed rough in some places and are  
often not ideal as far as ease of use and following the norms of all  
of the languages it supports.  In my opinion, the purpose of the swig  
bindings is not to provide an ideal development library for  
geographic data manipulation in every language supported -- instead  
its purpose is to provide *access* to the GDAL/OGR/OSR facilities in  
as many languages as possible.  This means compromise in a number of  
areas, with naming conventions, calling conventions, and many  
language norms being some of them.

One approach you might take if you are wishing to smooth over the  
rough spots of the swig bindings in your language is to develop a  
wrapper library.  For example, the Python Cartographic Library  
provides a more unified approach to data access, including GDAL/OGR  
through wrapping the swig API, and it more closely follows Python's  
language norms in the process.

SWIG^H^H^H^Hcompromise-is-the-art-of-spreading-misery-ly y'rs*

Howard

*<http://www.amk.ca/quotations/python-quotes/page-10>

On Apr 3, 2007, at 12:01 AM, Simon Perkins wrote:

> Hi,
>
> A lot of the SWIG generated binding functions use ints as arguments  
> and return types when a boolean type would be more appropriate,  
> e.g. the OGR Open() method takes an int as the second argument to  
> indicate whether the file should be opened with update access, and  
> the SpatialReference.IsGeographic() method returns an int. It would  
> be nice to use a more natural bool in these cases for languages  
> that support it.
>
> Would I be right in thinking that there's pretty much no way of  
> changing this now without breaking a lot of code? What about just  
> changing it for some of the newer bindings, e.g. C#, that have  
> recently had breaking API changes applied anyway. I like the new  
> enums, etc for the C# bindings in place of int constants, can we  
> fix the bool vs int problem there as well? I'd be happy to do this  
> if people want to fix it, and Tamas doesn't have time.
>
> And while we're changing this, should wkbGeometryType be  
> WkbGeometryType?
>
> Cheers,
>
> Simon
>
> _______________________________________________
> Gdal-dev mailing list
> Gdal-dev at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/gdal-dev
>




More information about the Gdal-dev mailing list