From: Sebastian Dröge Date: Wed, 19 Nov 2008 08:11:07 +0000 (+0000) Subject: Add support for class field initializers for classes that are not derived X-Git-Tag: VALA_0_5_2~79 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b8f1c0a47d6bd076a9852fba0797103ffdf401e2;p=thirdparty%2Fvala.git Add support for class field initializers for classes that are not derived * gobject/valagobjectmodule.vala: Add support for class field initializers for classes that are not derived from GObject. svn path=/trunk/; revision=2032 --- diff --git a/ChangeLog b/ChangeLog index 247278d93..9c5b6866c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-11-19 Sebastian Dröge + + * gobject/valagobjectmodule.vala: + + Add support for class field initializers for classes that are not + derived from GObject. + 2008-11-18 Thijs Vermeir * vapi/packages/gtk+-2.0/gtk+-2.0.metadata: diff --git a/gobject/valagobjectmodule.vala b/gobject/valagobjectmodule.vala index 68f97d19c..9c928424d 100644 --- a/gobject/valagobjectmodule.vala +++ b/gobject/valagobjectmodule.vala @@ -767,6 +767,19 @@ public class Vala.GObjectModule : GTypeModule { } } + /* initialize class fields */ + var fields = cl.get_fields (); + foreach (Field field in fields) { + if (field.binding != MemberBinding.CLASS || field.initializer == null) { + continue; + } + CCodeExpression left = new CCodeMemberAccess (new CCodeIdentifier ("klass"), + field.get_cname (), true); + CCodeExpression right = (CCodeExpression)field.initializer.ccodenode; + CCodeAssignment assign = new CCodeAssignment (left, right); + init_block.add_statement (new CCodeExpressionStatement (assign)); + } + if (cl.is_subtype_of (gobject_type)) { /* create type, dup_func, and destroy_func properties for generic types */ foreach (TypeParameter type_param in cl.get_type_parameters ()) { @@ -829,19 +842,6 @@ public class Vala.GObjectModule : GTypeModule { instance_priv_struct.add_field ("GDestroyNotify", func_name); } - /* initialize class fields */ - var fields = cl.get_fields (); - foreach (Field field in fields) { - if (field.binding != MemberBinding.CLASS || field.initializer == null) { - continue; - } - CCodeExpression left = new CCodeMemberAccess (new CCodeIdentifier ("klass"), - field.get_cname (), true); - CCodeExpression right = (CCodeExpression)field.initializer.ccodenode; - CCodeAssignment assign = new CCodeAssignment (left, right); - init_block.add_statement (new CCodeExpressionStatement (assign)); - } - /* create properties */ var props = cl.get_properties (); foreach (Property prop in props) {