Re: [Vala] Delegate on struct
- From: Harry Van Haaren <harryhaaren gmail com>
- To: Nicolas HENRY <icewil gmail com>
- Cc: "vala-list gnome org" <vala-list gnome org>
- Subject: Re: [Vala] Delegate on struct
- Date: Sat, 10 Jul 2010 18:07:59 +0100
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 <icewil gmail com> 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 <icewil gmail com>
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
vala-list gnome org
http://mail.gnome.org/mailman/listinfo/vala-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]