I got around it. I had to edit the purple.vapi and change it from a
class to struct. However moving along I had to change more classes to
structs. And now I am stuck with callbacks. I am not strong enough
with VAPI's to even know what they heck I am even doing...

Example, I see:
        [CCode (cheader_filename = "purple.h")]
        [Compact]
        public class EventLoopUiOps {
                public weak GLib.Callback input_add;
                public weak GLib.Callback input_get_error;
                public weak GLib.Callback input_remove;
                public weak GLib.Callback timeout_add;
                public weak GLib.Callback timeout_add_seconds;
                public weak GLib.Callback timeout_remove;
        }

and changed it too:
        [CCode (cheader_filename = "purple.h")]
        [Compact]
        public struct EventLoopUiOps {
                public weak GLib.Callback input_add;
                public weak GLib.Callback input_get_error;
                public weak GLib.Callback input_remove;
                public weak GLib.Callback timeout_add;
                public weak GLib.Callback timeout_add_seconds;
                public weak GLib.Callback timeout_remove;
        }

Then I see:
        [CCode (cheader_filename = "purple.h")]
        public static uint input_add (int fd, Purple.InputCondition cond,
Purple.InputFunction func);

Now when I try to set input_add:
        uint my_input_add(int fd, Purple.InputCondition condition,
Purple.InputFunction func)

        Purple.EventLoopUiOps glib_eventloops = Purple.EventLoopUiOps() {
                input_add = my_input_add,
                input_remove = GLib.Source.remove,
                input_get_error = null,
                timeout_add = GLib.Timeout.add,
                timeout_add_seconds = GLib.Timeout.add_seconds,
                timeout_remove = GLib.Source.remove
        };

I get "Invalid type for member `input_add'". I am going to take a wild
guess and say that in purple.vapi I need to add some [something that
fixed this] to let me add parameters to a callback?

On Fri, Feb 17, 2012 at 9:08 AM, Joseph Montanez
<[email protected]> wrote:
> I tried that one too:
>
>    Purple.CoreUiOps ui_ops = {
>        null, null, null, null, null
>    };
>
> error: initializer list used for `Purple.CoreUiOps?', which is neither
> array nor struct
>    Purple.CoreUiOps ui_ops = {
>
> And this one:
>
>    var ui_ops = Purple.CoreUiOps() {
>        debug_ui_init = null,
>        get_ui_info = null,
>        quit = null,
>        ui_init = null,
>        ui_prefs_init = null
>    };
>
>    error: syntax error, use `new' to create new objects
>
>
> I took a look at the libpurple headers and it is a struct:
> typedef struct
> {
>     void (*ui_prefs_init)(void);
>     void (*debug_ui_init)(void);
>     void (*ui_init)(void);
>     void (*quit)(void);
>
>     GHashTable* (*get_ui_info)(void);
>
>     void (*_purple_reserved1)(void);
>     void (*_purple_reserved2)(void);
>     void (*_purple_reserved3)(void);
> } PurpleCoreUiOps;
>
> Maybe the libpurple vapi that is bundled with vala is wrong?
>
> On Fri, Feb 17, 2012 at 7:16 AM, Luca Bruno <[email protected]> wrote:
>> On Fri, Feb 17, 2012 at 3:38 PM, Joseph Montanez <[email protected]>
>> wrote:
>>>
>>> My brain is melting trying to figure out how to get Purple.CoreUiOps
>>> to initialize.
>>>
>>> Here is the vapi:
>>>        [CCode (cheader_filename = "purple.h")]
>>>        [Compact]
>>>        public class CoreUiOps {
>>>                [CCode (has_construct_function = false)]
>>>                public weak GLib.Callback debug_ui_init;
>>>                public weak GLib.Callback get_ui_info;
>>>                public weak GLib.Callback quit;
>>>                public weak GLib.Callback ui_init;
>>>                public weak GLib.Callback ui_prefs_init;
>>>        }
>>
>>
>> Try with a struct.
>>
>> --
>> www.debian.org - The Universal Operating System
>
>
>
> --
> Joseph Montanez
> Web Developer
> Gorilla3D
> Design, Develop, Deploy



-- 
Joseph Montanez
Web Developer
Gorilla3D
Design, Develop, Deploy
_______________________________________________
vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to