Hey,

Thanks for the extra info... unfortunatly I dont understand line 113 at all,
nevermind the rest of the .c file ;-)

I hope somebody else can help you, I'm not up to scratch on my C.
Cheers, -Harry

On Thu, Jul 8, 2010 at 12:59 AM, Nicolas HENRY <[email protected]> wrote:

> Line 113 :
>
>        t.my_struct_func = (_tmp0_ = __lambda0__my_delegate_func,
> ((t.my_struct_func_target_destroy_notify == NULL) ? NULL :
> (t.my_struct_func_target_destroy_notify (t.my_struct_func_target),
> NULL), t.my_struct_func = NULL, t.my_struct_func_target = NULL,
> t.my_struct_func_target_destroy_notify = NULL), t.my_struct_func_target
> = block1_data_ref (_data1_), t.my_struct_func_target_destroy_notify =
> block1_data_unref, _tmp0_);
>
> test.c :
>
> /* test.c generated by valac, the Vala compiler
>  * generated from test.vala, do not modify */
>
>
> #include <glib.h>
> #include <glib-object.h>
> #include <stdlib.h>
> #include <string.h>
>
>
> #define TYPE_MY_STRUCT (my_struct_get_type ())
> typedef struct _MyStruct MyStruct;
> #define _g_free0(var) (var = (g_free (var), NULL))
> typedef struct _Block1Data Block1Data;
>
> typedef void (*myDelegateFunc) (void* user_data);
> struct _MyStruct {
>        myDelegateFunc my_struct_func;
>        gpointer my_struct_func_target;
>        GDestroyNotify my_struct_func_target_destroy_notify;
> };
>
> struct _Block1Data {
>        int _ref_count_;
>        char* a;
> };
>
>
>
> GType my_struct_get_type (void);
> MyStruct* my_struct_dup (const MyStruct* self);
> void my_struct_free (MyStruct* self);
> void my_struct_copy (const MyStruct* self, MyStruct* dest);
> void my_struct_destroy (MyStruct* self);
> static void _lambda0_ (Block1Data* _data1_);
> static void __lambda0__my_delegate_func (gpointer self);
> static Block1Data* block1_data_ref (Block1Data* _data1_);
> static void block1_data_unref (Block1Data* _data1_);
> void _vala_main (void);
>
>
>
> void my_struct_copy (const MyStruct* self, MyStruct* dest) {
>        dest->my_struct_func = self->my_struct_func;
> }
>
>
> void my_struct_destroy (MyStruct* self) {
>        ((*self).my_struct_func_target_destroy_notify == NULL) ? NULL :
> ((*self).my_struct_func_target_destroy_notify
> ((*self).my_struct_func_target), NULL);
>        self->my_struct_func = NULL;
>        (*self).my_struct_func_target = NULL;
>        (*self).my_struct_func_target_destroy_notify = NULL;
> }
>
>
> MyStruct* my_struct_dup (const MyStruct* self) {
>        MyStruct* dup;
>        dup = g_new0 (MyStruct, 1);
>        my_struct_copy (self, dup);
>        return dup;
> }
>
>
> void my_struct_free (MyStruct* self) {
>        my_struct_destroy (self);
>        g_free (self);
> }
>
>
> GType my_struct_get_type (void) {
>        static volatile gsize my_struct_type_id__volatile = 0;
>        if (g_once_init_enter (&my_struct_type_id__volatile)) {
>                GType my_struct_type_id;
>                my_struct_type_id = g_boxed_type_register_static
> ("MyStruct",
> (GBoxedCopyFunc) my_struct_dup, (GBoxedFreeFunc) my_struct_free);
>                g_once_init_leave (&my_struct_type_id__volatile,
> my_struct_type_id);
>        }
>        return my_struct_type_id__volatile;
> }
>
>
> static void _lambda0_ (Block1Data* _data1_) {
>        g_print ("%s", _data1_->a);
> }
>
>
> static void __lambda0__my_delegate_func (gpointer self) {
>        _lambda0_ (self);
> }
>
>
> static Block1Data* block1_data_ref (Block1Data* _data1_) {
>        ++_data1_->_ref_count_;
>        return _data1_;
> }
>
>
> static void block1_data_unref (Block1Data* _data1_) {
>        if ((--_data1_->_ref_count_) == 0) {
>                _g_free0 (_data1_->a);
>                g_slice_free (Block1Data, _data1_);
>        }
> }
>
>
> void _vala_main (void) {
>        Block1Data* _data1_;
>        MyStruct t = {0};
>        myDelegateFunc _tmp0_;
>        _data1_ = g_slice_new0 (Block1Data);
>        _data1_->_ref_count_ = 1;
>        _data1_->a = g_strdup ("test");
>        memset (&t, 0, sizeof (MyStruct));
>        t.my_struct_func = (_tmp0_ = __lambda0__my_delegate_func,
> ((t.my_struct_func_target_destroy_notify == NULL) ? NULL :
> (t.my_struct_func_target_destroy_notify (t.my_struct_func_target),
> NULL), t.my_struct_func = NULL, t.my_struct_func_target = NULL,
> t.my_struct_func_target_destroy_notify = NULL), t.my_struct_func_target
> = block1_data_ref (_data1_), t.my_struct_func_target_destroy_notify =
> block1_data_unref, _tmp0_);
>        t.my_struct_func (t.my_struct_func_target);
>        my_struct_destroy (&t);
>        block1_data_unref (_data1_);
> }
>
>
> int main (int argc, char ** argv) {
>        g_type_init ();
>        _vala_main ();
>        return 0;
> }
>
>
>
>
>
> Le jeudi 08 juillet 2010 à 00:29 +0100, Harry Van Haaren a écrit :
> > Hey Nicolas,
> >
> > Any chance you'd compile with   valac --save-temps  <your files etc
> > here>?
> > And then maybe post line 113 from your test.c file so we can see
> > what's really going on there?
> >
> > Cheers, -Harry
> >
> > On Thu, Jul 8, 2010 at 12:14 AM, Nicolas HENRY <[email protected]>
> > wrote:
> >         Hello,
> >
> >         I don't understand why this code produce a warning (vala
> >         0.9.2) :
> >
> >         public delegate void myDelegateFunc();
> >
> >         struct MyStruct {
> >                public myDelegateFunc my_struct_func;
> >         }
> >
> >         void main(){
> >                string a = "test";
> >                var t = MyStruct();
> >                t.my_struct_func = () => {
> >                        print(a);
> >                };
> >                t.my_struct_func();
> >         }
> >
> >         .../test.vala.c: In function ‘_vala_main’:
> >         .../test.vala.c:113: warning: assignment from incompatible
> >         pointer type
> >
> >         Thanks.
> >
> >
> >         _______________________________________________
> >         vala-list mailing list
> >         [email protected]
> >         http://mail.gnome.org/mailman/listinfo/vala-list
> >
>
>
_______________________________________________
vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to