[geos-devel] Swig Update and questions
Charlie Savage
cfis at savagexi.com
Sat Jun 24 20:58:23 EDT 2006
Strk - Thanks for the feedback. Some more thoughts below.
>> I think this boils down to three major decisions about the SWIG bindings
>> that need to be agreed on:
>>
>> 1. What geometry model do clients work with? Just geometry or geometry,
>> point, line, etc.
>
> Clients should only work with the C api, unless willing
> to follow API revolutions for a couple of years.
>
>> 2. What compatibility benefits does the C api provide beyond the
>> benefits of the generated swig bindings?
>
> The C interface will be careful maintained binary compatible
> between versions.
Yes, but I don't think that matters for the bindings. Binary
compatibility is not needed because Python/Ruby dynamically load the
bindings library and then have APIS that install the right Python/Ruby
classes/methods (things like define_class("foo"), add_method("foo",
"bar"). So Ruby and Python do not rely on the method layout and
signatures of the shared library to remain the same in contrast to a C
or C++ program would.
As an example - the change from GEOS 2.2 to GEOS 3.0 from a client
perspective would not be noticed except for the fact that the default
coordsequence class changed if I remember correctly (having a whole
class removed does matter of course). Even the exceptions - whose
inheritance hierarchy is of course different, look exactly the same to
the client. The bindings do a pretty good job of insulating clients.
>
>> 3. How much of GEOS's api gets exposed to clients?
>
> The smallest possible. Ideally none :)
:) You could have been done with GEOS years ago!
> The GEOS API *is* the C-API, previous releases were insane
> in exposing that wide C++ interface.
Makes sense. The SWIG bindings expose a bit more because they are
exposing all the public methods of classes exposed by the c api (so all
public methods on Line, Point, etc.)
Which leads to another question. Should I remove the PrecisionModel and
GeometryFactory classes from the SWIG api like the c-api has done and
just use a shared global factory? That would also lead the to the
removal of the WKBWriter/WKBReader classes which would be replaced by
global methods like in the C api.
Charlie
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3237 bytes
Desc: S/MIME Cryptographic Signature
Url : http://lists.osgeo.org/pipermail/geos-devel/attachments/20060624/64e70ef1/smime.bin
More information about the geos-devel
mailing list