From: Jürg Billeter Date: Fri, 24 Oct 2008 12:19:30 +0000 (+0000) Subject: Add GObjectModule X-Git-Tag: VALA_0_5_1~85 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=40cf0b141cb0a4e90d70f8cbaae8fe9f67f6f8fd;p=thirdparty%2Fvala.git Add GObjectModule 2008-10-24 Jürg Billeter * gobject/Makefile.am: * gobject/valaccodeclassbinding.vala: * gobject/valaccodegenerator.vala: * gobject/valaccodeinterfacebinding.vala: * gobject/valaccodemodule.vala: * gobject/valaccodeobjecttypesymbolbinding.vala: * gobject/valagobjectmodule.vala: Add GObjectModule svn path=/trunk/; revision=1886 --- diff --git a/ChangeLog b/ChangeLog index 6fc406f90..363cba847 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-10-24 Jürg Billeter + + * gobject/Makefile.am: + * gobject/valaccodeclassbinding.vala: + * gobject/valaccodegenerator.vala: + * gobject/valaccodeinterfacebinding.vala: + * gobject/valaccodemodule.vala: + * gobject/valaccodeobjecttypesymbolbinding.vala: + * gobject/valagobjectmodule.vala: + + Add GObjectModule + 2008-10-24 Jürg Billeter * vala/valacodegenerator.vala: diff --git a/gobject/Makefile.am b/gobject/Makefile.am index e5b6e6e9a..613e2cc29 100644 --- a/gobject/Makefile.am +++ b/gobject/Makefile.am @@ -32,10 +32,10 @@ libvala_la_VALASOURCES = \ valaccodemethodmodule.vala \ valaccodemodule.vala \ valaccodeobjecttypesymbolbinding.vala \ - valaccodetypesymbolbinding.vala \ valaclassregisterfunction.vala \ valadbusmodule.vala \ valagirwriter.vala \ + valagobjectmodule.vala \ valainterfaceregisterfunction.vala \ valatyperegisterfunction.vala \ $(NULL) diff --git a/gobject/valaccodeclassbinding.vala b/gobject/valaccodeclassbinding.vala index 6535a4bcb..be9b5dc62 100644 --- a/gobject/valaccodeclassbinding.vala +++ b/gobject/valaccodeclassbinding.vala @@ -868,7 +868,7 @@ public class Vala.CCodeClassBinding : CCodeObjectTypeSymbolBinding { var cinst = new CCodeFunctionCall (new CCodeIdentifier ("g_object_class_install_property")); cinst.add_argument (ccall); cinst.add_argument (new CCodeConstant (prop.get_upper_case_cname ())); - cinst.add_argument (get_param_spec (prop)); + cinst.add_argument (head.get_param_spec (prop)); init_block.add_statement (new CCodeExpressionStatement (cinst)); } @@ -876,7 +876,7 @@ public class Vala.CCodeClassBinding : CCodeObjectTypeSymbolBinding { /* create signals */ foreach (Signal sig in cl.get_signals ()) { - init_block.add_statement (new CCodeExpressionStatement (get_signal_creation (sig, cl))); + init_block.add_statement (new CCodeExpressionStatement (head.get_signal_creation (sig, cl))); } } else if (!cl.is_compact) { /* create type, dup_func, and destroy_func fields for generic types */ diff --git a/gobject/valaccodegenerator.vala b/gobject/valaccodegenerator.vala index 8a122093d..c1c0145b7 100644 --- a/gobject/valaccodegenerator.vala +++ b/gobject/valaccodegenerator.vala @@ -143,6 +143,7 @@ public class Vala.CCodeGenerator : CodeGenerator { public CCodeGenerator () { head = new CCodeBaseModule (this, head); head = new CCodeMethodModule (this, head); + head = new GObjectModule (this, head); head = new DBusModule (this, head); predefined_marshal_set = new HashSet (str_hash, str_equal); diff --git a/gobject/valaccodeinterfacebinding.vala b/gobject/valaccodeinterfacebinding.vala index caf93e9ab..659947c80 100644 --- a/gobject/valaccodeinterfacebinding.vala +++ b/gobject/valaccodeinterfacebinding.vala @@ -124,7 +124,7 @@ public class Vala.CCodeInterfaceBinding : CCodeObjectTypeSymbolBinding { if (prop.is_abstract) { var cinst = new CCodeFunctionCall (new CCodeIdentifier ("g_object_interface_install_property")); cinst.add_argument (new CCodeIdentifier ("iface")); - cinst.add_argument (get_param_spec (prop)); + cinst.add_argument (head.get_param_spec (prop)); init_block.add_statement (new CCodeExpressionStatement (cinst)); } @@ -133,7 +133,7 @@ public class Vala.CCodeInterfaceBinding : CCodeObjectTypeSymbolBinding { /* create signals */ foreach (Signal sig in iface.get_signals ()) { - init_block.add_statement (new CCodeExpressionStatement (get_signal_creation (sig, iface))); + init_block.add_statement (new CCodeExpressionStatement (head.get_signal_creation (sig, iface))); } // connect default implementations diff --git a/gobject/valaccodemodule.vala b/gobject/valaccodemodule.vala index 8918adfdd..634235638 100644 --- a/gobject/valaccodemodule.vala +++ b/gobject/valaccodemodule.vala @@ -83,4 +83,12 @@ public abstract class Vala.CCodeModule { public virtual CCodeExpression get_construct_property_assignment (CCodeConstant canonical_cconstant, DataType property_type, CCodeExpression value) { return next.get_construct_property_assignment (canonical_cconstant, property_type, value); } + + public virtual CCodeFunctionCall get_param_spec (Property prop) { + return next.get_param_spec (prop); + } + + public virtual CCodeFunctionCall get_signal_creation (Signal sig, TypeSymbol type) { + return next.get_signal_creation (sig, type); + } } diff --git a/gobject/valaccodeobjecttypesymbolbinding.vala b/gobject/valaccodeobjecttypesymbolbinding.vala index e64f55848..3d8ad0daa 100644 --- a/gobject/valaccodeobjecttypesymbolbinding.vala +++ b/gobject/valaccodeobjecttypesymbolbinding.vala @@ -22,7 +22,7 @@ using GLib; -public abstract class Vala.CCodeObjectTypeSymbolBinding : Vala.CCodeTypeSymbolBinding { +public abstract class Vala.CCodeObjectTypeSymbolBinding : Vala.CCodeBinding { bool is_dbus_visible (CodeNode node) { var dbus_attribute = node.get_attribute ("DBus"); diff --git a/gobject/valaccodetypesymbolbinding.vala b/gobject/valagobjectmodule.vala similarity index 97% rename from gobject/valaccodetypesymbolbinding.vala rename to gobject/valagobjectmodule.vala index 22cd12ae6..9860c9ae1 100644 --- a/gobject/valaccodetypesymbolbinding.vala +++ b/gobject/valagobjectmodule.vala @@ -1,4 +1,4 @@ -/* valaccodetypesymbolbinding.vala +/* valagobjectmodule.vala * * Copyright (C) 2008 Jürg Billeter * @@ -23,8 +23,12 @@ using GLib; -public abstract class Vala.CCodeTypeSymbolBinding : CCodeBinding { - public CCodeFunctionCall get_param_spec (Property prop) { +public class Vala.GObjectModule : CCodeModule { + public GObjectModule (CCodeGenerator codegen, CCodeModule? next) { + base (codegen, next); + } + + public override CCodeFunctionCall get_param_spec (Property prop) { var cspec = new CCodeFunctionCall (); cspec.add_argument (prop.get_canonical_cconstant ()); cspec.add_argument (new CCodeConstant ("\"%s\"".printf (prop.nick))); @@ -200,7 +204,7 @@ public abstract class Vala.CCodeTypeSymbolBinding : CCodeBinding { return cspec; } - public CCodeFunctionCall get_signal_creation (Signal sig, TypeSymbol type) { + public override CCodeFunctionCall get_signal_creation (Signal sig, TypeSymbol type) { var csignew = new CCodeFunctionCall (new CCodeIdentifier ("g_signal_new")); csignew.add_argument (new CCodeConstant ("\"%s\"".printf (sig.get_cname ()))); csignew.add_argument (new CCodeIdentifier (type.get_type_id ()));