[C++-sig] [Boost.Python] Wrapping C library functions
Stefan Seefeld
seefeld at sympatico.ca
Mon Feb 15 22:41:17 CET 2010
On 02/15/2010 04:26 PM, TP wrote:
> On Sun, Feb 14, 2010 at 5:04 PM, Stefan Seefeld<seefeld at sympatico.ca> wrote:
>
>> Yes. Do you have the definition of PIX available ? In that case, you could
>> use that via class_<PIX>....
>>
> Yes. The entire source of the Leptonica C Image Processing Library is
> available at http::/leptonica.com.
>
> Could you give a little more detail please?
>
If PIX is a known type (as opposed to an opaque pointer), you can wrap
that directly, instead of having to use an indirection.
However, you still need to find a way to specify how PIX objects are to
be constructed and destroyed, and thus, you need to store PIX inside
Python objects via pointers that allow custom destructors (such as
boost::shared_ptr).
I bet, all things considered, a wrapper class such as the one I proposed
in my previous mail is still the best way forward, as it best
encapsulates how PIX objects get constructed (incl. cloned) and destructed.
Memory management is by far the most complex aspect of wrapping C and
C++ libraries in Python. And if your library mostly operates on raw
pointers, you really need to be careful about object lifetime, argument
and return value ownership, etc.
Regards,
Stefan
--
...ich hab' noch einen Koffer in Berlin...
More information about the Cplusplus-sig
mailing list