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