[C++-sig] Defining Policies for unknown data handles
nicodemus at globalite.com.br
Sat Apr 5 20:22:21 CEST 2003
Lutz Paelike wrote:
> Hi all,
> i'm starting with boost python and also tried the great pyste tool to
> make some python bindings.
> I have a question, which seems not too difficult for me, but i'm not
> sure which is the right way to go..
> I have a commercial application with an interface i like to use.
> There are a couple of structures and functions defined.
> Some of them use a pointer to a hidden structure returned by a
> initalizing function. I don't need to know anything about the struct ,
> i just pass it on to other functions to refer to the internal data.
> It's going like this:
> 1. Definition of data handle:
> typedef struct _CapChannel *CapChannel; /* Opaque pointer to a
> 2. Get Handle
> CapChannel CapCreateChannel _PROTO((char *name, CapChannelUsage usage,
> int data_type));
> 3. Use Handle
> int CapSetData _PROTO((CapChannel channel, void *data));
> You get the picture...
> So when i use pyste to generate the boost python interface code it gives
> a warning:
> ---> Error: CapCreateChannel returns a pointer or a reference, but no
> policy was specified.
> This makes perfect sense for me, as Pyste/Boost Python don't know how to
> deal with this reference.
> The question for me is now which is the right policy to use and how do
> i define this correctly?
> I don't need access to _CapChannel from Python. I just want to store the
Just set the correct policy for CapCreateChannel:
f = Function('CapCreateChannel', ...)
Note: pyste didn't support return_opaque_pointer until version 0.6.5,
which I just commited to CVS.
Hope that helps,
More information about the Cplusplus-sig