On May 22, 2008, at 11:48 AM, Nino Walker wrote: > Sorry for the ambiguity: the codebase is C++, and there is no C > interface to it. > > Nino > > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > ] On Behalf Of Mateusz Loskot > Sent: Thursday, May 22, 2008 8:43 AM > To: [email protected] > Subject: Re: [Geowanking] c++/python binding wisdom > > On May 22, 2008, at 5:18 PM, [EMAIL PROTECTED] wrote: >> Hopefully, y'all with experience writing or using swig bindings or >> other c/py framework can weigh in. Rants, gotchas, resources, >> whatever great or token wisdom will be sincerely appreciated. > > In the subject you use C++/Python but above you use C/Python, both are > very different cases. If you wrap C++ API, I'd go with Boost Python > [1]. IMHO, there is nothing better than Boost Python for C++, it beats > SWIG regarding C++ language support. > I don't have much experience with wrapping C for Python, but some > users say ctypes may be better than SWIG. > > [1] http://www.boost.org/doc/libs/1_35_0/libs/python/doc/index.html
SWIG sucks for a number of reasons and is great for exactly one reason -- it support more than one language. If you need to support bindings for more than one language *right now,* I would look at using SWIG. Otherwise, I would skip it. (Speaking as a SWIG bindings developer for GDAL and MapServer). Writing Python bindings against a C++ API can be problematic because of ABI hell. Small changes/additions/deletions/const correctness issues in subsequent C++ library releases will make your bindings fail to work without recompiling them. This means that the bindings have to be built and ship with the library itself rather than being made available through something like PyPi. Python's easy_install and ilk can make it really simple for folks to get going with bindings if they are getting the base libraries through their package manager, but this only works if ABI issues aren't in play. A C API + ctypes (foreign function interface standard in Python 2.5+) is a really nice way to go. ABI issues tend to go away, most people have ctypes installed already or can get it quickly, and you can leave a number of hassles at the feet of the ctypes developers (cross platform issues, the need for compiling bindings code on windows). Howard _______________________________________________ Geowanking mailing list [email protected] http://lists.burri.to/mailman/listinfo/geowanking
