On Mon, 2009-01-26 at 11:32 +0100, Frederik wrote:
> Frederik wrote:
> > Michael 'Mickey' Lauer wrote:
> >> Hi,
> >>
> >> I'm working on my first binding for a non-gobject library -- please see 
> >> gsm0710_p.h.
> >>
> >> My current vapi is also attached. I'm struggling with setting the callback 
> >> pointers now. How should the callbacks in my .vala object be defined so 
> >> that 
> >> I can set them via e.g. 
> >>
> >> <callback>
> >>
> >> var ctx = new Context();
> >> ctx.at_command = <callback>
> >>
> >> Cheers,
> >>
> >> Mickey.
> > 
> > You should make your delegate non-static, since an instance gets passed.
> > In your case the instance gets passed as first parameter and not as last
> > parameter, so you must add [CCode [instance_pos = 0)]. And 'char*'
> > translates to 'string' in Vala.
> > 
> >   [CCode [instance_pos = 0)]
> >   public delegate int at_command_t (string command);
> 
> However, if it is meant as source object for some kind of event and not
> as instance you should mark it as static and pass the context explicitly:
> 
>   public static delegate int at_command_t (Context ctx, string command);

Yes, this is better as, in this library, the first callback parameter
does not represent the instance of the user-defined handler (usually
called user_data), it's always a pointer to the context.

Jürg

_______________________________________________
Vala-list mailing list
Vala-list@gnome.org
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to