Auxiliary argument for array (from GI)



Hello,

   I'm porting my application to use GObject Introspection, and thus
testing the Python bindings provided by pygobject-2.21.5. Thanks a lot
for all these pieces of code, it really brings exciting new
possibilities.

   My issue is when using a prototype of function like this:
/**
 * setPlanetData:
 * @nPlanets: number of planets in the solar system.
 * @arrayDiameter: (in) (array length=nPlanets): diameters of planets.
 * @arrayMass: (in) (array length=nPlanets): masses of planets.
 *
 * Set-up the number of planets and their characteristics.
 */
gboolean setPlanetData(gint nPlanets, gfloat *arrayDiameter, gflaot
*arrayMass);

The .gir file is properly created with a method, a return value and
three parameters, two of them being arrays which length is given by
parameter id=0.

But, when using gi.repository in Python, my method setPlanetData takes
exactly one argument while I was waiting for two.

It cames from the method '_prepare_invocation_state' (file
pygi-invoke.c) which counts the number of in auxiliary arguments. In
case of an array, line 184, the argument positioned at
length_arg_pos, is set auxiliary and n_aux_in_args is increased. But in
my function case, the argument nPlanets in used twice and thus
n_aux_in_args is incremented twice while nPlanets is a unique argument.

There are two possibilities:
- one should not write C functions with such a prototype, I may then
suggest the attached patch1, adding a warn_if_fail when the argument
has already the auxiliary flag.
- one should count the argument as auxiliary, only if it is not already
auxiliary, see the attached patch2.

Thanks for reviewing this and giving your opinion. If this issue is
relevant, I can open a bug and attached whatever patch is adapted.

Regards,

Damien.

Attachment: patch1
Description: Binary data

Attachment: patch2
Description: Binary data



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]