On Wed, 2012-05-16 at 15:28 +0200, Alejandro T. Colombini wrote:
> Hello vala-list,
>   I'm generating a Vala binding for a C library using vapigen and I've
> managed to set the type of the elements by using the GObject
> Introspection's "element-type" annotation for both the parameters and
> return values of functions, but now I need a way to do the same thing for
> the element type of object memebers.
> 
>   A simple example of what I want:
> public class MyObject : GLib.Object{
>     public weak GLib.SList<AnotherObject> object_list;
> }
> 
>   And this is what I've generated so far:
> public class MyObject : GLib.Object{
>     public weak GLib.SList<void*> object_list;
> }
> 
>   I've taken a look at the GIDL metadata and also the GObject
> Instrospection documentations, but i've found nothing that suits my needs.
> If there's still no way (or will never be) to do this, I guess there's no
> problem leaving the element type as "void*" in the generated .vapi files.

GIDL is not the same as GIR (which is the XML format used by GObject
Introspection).  You could use GIR metadata to achieve what you're
after:

        MyObject.object_list type="weak GLib.SList<AnotherObject>"

If you really did mean GIDL you could do something like this:

        MyObject.object_list type_arguments="AnotherObject"

But if you're really using G-I it would be best to add the proper
annotations to your C code so other G-I consumers can take advantage.  I
believe something like this should work:

        /**
         * MyObject:
         * @object_list: (element-type AnotherObject): list of objects
         *
         * Description of MyObject.
         */
        typedef struct _MyObject {
          GSList* object_list;
        } MyObject;


-Evan

_______________________________________________
vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to