From: Jürg Billeter Date: Fri, 30 May 2008 23:48:58 +0000 (+0000) Subject: Support dynamic properties and signals also for GObject subtypes X-Git-Tag: VALA_0_3_3~53 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5df288b4fe20106d382bc824f7fc8bd81726319c;p=thirdparty%2Fvala.git Support dynamic properties and signals also for GObject subtypes 2008-05-31 Jürg Billeter * gobject/valaccodedynamicpropertybinding.vala: * gobject/valaccodedynamicsignalbinding.vala: Support dynamic properties and signals also for GObject subtypes svn path=/trunk/; revision=1505 --- diff --git a/ChangeLog b/ChangeLog index 4913f7f33..8df2c2a62 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-05-31 Jürg Billeter + + * gobject/valaccodedynamicpropertybinding.vala: + * gobject/valaccodedynamicsignalbinding.vala: + + Support dynamic properties and signals also for GObject subtypes + 2008-05-31 Jürg Billeter * gobject/valaccodegenerator.vala: diff --git a/gobject/valaccodedynamicpropertybinding.vala b/gobject/valaccodedynamicpropertybinding.vala index d589927a1..1acda5fcb 100644 --- a/gobject/valaccodedynamicpropertybinding.vala +++ b/gobject/valaccodedynamicpropertybinding.vala @@ -53,7 +53,8 @@ public class Vala.CCodeDynamicPropertyBinding : CCodeBinding { func.add_parameter (new CCodeFormalParameter ("obj", dynamic_property.dynamic_type.get_cname ())); var block = new CCodeBlock (); - if (dynamic_property.dynamic_type.data_type == codegen.gobject_type) { + if (dynamic_property.dynamic_type.data_type != null + && dynamic_property.dynamic_type.data_type.is_subtype_of (codegen.gobject_type)) { generate_gobject_property_getter_wrapper (block); } else { Report.error (node.source_reference, "dynamic properties are not supported for `%s'".printf (dynamic_property.dynamic_type.to_string ())); @@ -83,7 +84,8 @@ public class Vala.CCodeDynamicPropertyBinding : CCodeBinding { func.add_parameter (new CCodeFormalParameter ("value", node.property_type.get_cname ())); var block = new CCodeBlock (); - if (dynamic_property.dynamic_type.data_type == codegen.gobject_type) { + if (dynamic_property.dynamic_type.data_type != null + && dynamic_property.dynamic_type.data_type.is_subtype_of (codegen.gobject_type)) { generate_gobject_property_setter_wrapper (block); } else { Report.error (node.source_reference, "dynamic properties are not supported for `%s'".printf (dynamic_property.dynamic_type.to_string ())); diff --git a/gobject/valaccodedynamicsignalbinding.vala b/gobject/valaccodedynamicsignalbinding.vala index 3c8ce3cb0..443881902 100644 --- a/gobject/valaccodedynamicsignalbinding.vala +++ b/gobject/valaccodedynamicsignalbinding.vala @@ -59,7 +59,8 @@ public class Vala.CCodeDynamicSignalBinding : CCodeBinding { func.add_parameter (new CCodeFormalParameter ("handler", "GCallback")); func.add_parameter (new CCodeFormalParameter ("data", "gpointer")); var block = new CCodeBlock (); - if (dynamic_signal.dynamic_type.data_type == codegen.gobject_type) { + if (dynamic_signal.dynamic_type.data_type != null + && dynamic_signal.dynamic_type.data_type.is_subtype_of (codegen.gobject_type)) { generate_gobject_connect_wrapper (block); } else if (dynamic_signal.dynamic_type.data_type == codegen.dbus_object_type) { generate_dbus_connect_wrapper (block);