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
