]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Add CCodeDynamicSignalModule, remove CodeBinding and CCodeBinding
authorJürg Billeter <j@bitron.ch>
Fri, 24 Oct 2008 14:31:28 +0000 (14:31 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Fri, 24 Oct 2008 14:31:28 +0000 (14:31 +0000)
2008-10-24  Jürg Billeter  <j@bitron.ch>

* vala/Makefile.am:
* vala/valacodebinding.vala:
* vala/valacodegenerator.vala:
* vala/valacodenode.vala:
* vala/valadynamicsignal.vala:
* gobject/Makefile.am:
* gobject/valaccodeassignmentmodule.vala:
* gobject/valaccodebinding.vala:
* gobject/valaccodedynamicsignalmodule.vala:
* gobject/valaccodegenerator.vala:
* gobject/valaccodemodule.vala:

Add CCodeDynamicSignalModule, remove CodeBinding and CCodeBinding

svn path=/trunk/; revision=1896

12 files changed:
ChangeLog
gobject/Makefile.am
gobject/valaccodeassignmentmodule.vala
gobject/valaccodebinding.vala [deleted file]
gobject/valaccodedynamicsignalmodule.vala [moved from gobject/valaccodedynamicsignalbinding.vala with 63% similarity]
gobject/valaccodegenerator.vala
gobject/valaccodemodule.vala
vala/Makefile.am
vala/valacodebinding.vala [deleted file]
vala/valacodegenerator.vala
vala/valacodenode.vala
vala/valadynamicsignal.vala

index a9779379e3cca9d39a0899db63d3266469dff2e5..cdbc059a3e6ead1ab5d1846d92c1da1337589607 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2008-10-24  Jürg Billeter  <j@bitron.ch>
+
+       * vala/Makefile.am:
+       * vala/valacodebinding.vala:
+       * vala/valacodegenerator.vala:
+       * vala/valacodenode.vala:
+       * vala/valadynamicsignal.vala:
+       * gobject/Makefile.am:
+       * gobject/valaccodeassignmentmodule.vala:
+       * gobject/valaccodebinding.vala:
+       * gobject/valaccodedynamicsignalmodule.vala:
+       * gobject/valaccodegenerator.vala:
+       * gobject/valaccodemodule.vala:
+
+       Add CCodeDynamicSignalModule, remove CodeBinding and CCodeBinding
+
 2008-10-24  Jürg Billeter  <j@bitron.ch>
 
        * vala/valacodegenerator.vala:
index cb50fe68fac21248d4a5d5e595b480fe416a808d..80e86e4c359571aea094f1753daf97eebb82fc49 100644 (file)
@@ -15,10 +15,9 @@ libvala_la_VALASOURCES = \
        valaccodearraymodule.vala \
        valaccodeassignmentmodule.vala \
        valaccodebasemodule.vala \
-       valaccodebinding.vala \
        valaccodecompiler.vala \
        valaccodedynamicpropertymodule.vala \
-       valaccodedynamicsignalbinding.vala \
+       valaccodedynamicsignalmodule.vala \
        valaccodeelementaccessmodule.vala \
        valaccodegenerator.vala \
        valaccodegeneratorsignal.vala \
index e4083e40845c35b652baa6a1e16a33d2a4d5f9bd..56abf3e2b8a0e15c5a4440d884cd585b849cd79c 100644 (file)
@@ -99,7 +99,7 @@ public class Vala.CCodeAssignmentModule : CCodeModule {
 
                if (assignment.operator == AssignmentOperator.ADD) {
                        if (sig is DynamicSignal) {
-                               connect_func = codegen.dynamic_signal_binding ((DynamicSignal) sig).get_connect_wrapper_name ();
+                               connect_func = head.get_dynamic_signal_connect_wrapper_name ((DynamicSignal) sig);
                        } else {
                                connect_func = "g_signal_connect_object";
                                if (m.binding != MemberBinding.INSTANCE) {
@@ -108,7 +108,7 @@ public class Vala.CCodeAssignmentModule : CCodeModule {
                        }
                } else if (assignment.operator == AssignmentOperator.SUB) {
                        if (sig is DynamicSignal) {
-                               connect_func = codegen.dynamic_signal_binding ((DynamicSignal) sig).get_disconnect_wrapper_name ();
+                               connect_func = head.get_dynamic_signal_disconnect_wrapper_name ((DynamicSignal) sig);
                        } else {
                                connect_func = "g_signal_handlers_disconnect_matched";
                        }
diff --git a/gobject/valaccodebinding.vala b/gobject/valaccodebinding.vala
deleted file mode 100644 (file)
index 4a29021..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/* valaccodebinding.vala
- *
- * Copyright (C) 2007-2008  Jürg Billeter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
-
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
- *
- * Author:
- *     Jürg Billeter <j@bitron.ch>
- */
-
-using GLib;
-
-/**
- * The link between a source code node and generated code.
- */
-public abstract class Vala.CCodeBinding : CodeBinding {
-       /**
-        * The C Code generator.
-        */
-       public CCodeGenerator codegen { get; set; }
-
-       public CCodeModule head {
-               get { return codegen.head; }
-       }
-
-       /**
-        * Generate code for this source code node.
-        */
-       public virtual void emit () {
-       }
-
-       public CCodeBinding? code_binding (CodeNode node) {
-               return (CCodeBinding) node.get_code_binding (codegen);
-       }
-}
similarity index 63%
rename from gobject/valaccodedynamicsignalbinding.vala
rename to gobject/valaccodedynamicsignalmodule.vala
index a070e3ebb2810eb87e0acc267d17375e4d540bc7..f8b9c60dc90cc1ead7a6d1a4b4aa84c3c96ff29b 100644 (file)
@@ -1,4 +1,4 @@
-/* valaccodedynamicsignalbinding.vala
+/* valaccodedynamicsignalmodule.vala
  *
  * Copyright (C) 2007-2008  Jürg Billeter
  *
@@ -26,86 +26,71 @@ using Gee;
 /**
  * The link between a dynamic signal and generated code.
  */
-public class Vala.CCodeDynamicSignalBinding : CCodeBinding {
-       public Signal node { get; set; }
-
-       public CCodeDynamicSignalBinding (CCodeGenerator codegen, DynamicSignal node) {
-               this.node = node;
-               this.codegen = codegen;
+public class Vala.CCodeDynamicSignalModule : CCodeModule {
+       public CCodeDynamicSignalModule (CCodeGenerator codegen, CCodeModule? next) {
+               base (codegen, next);
        }
 
-       string? connect_wrapper_name;
-       string? disconnect_wrapper_name;
-
-       string? dynamic_cname;
-
-       private static int signal_wrapper_id;
+       int signal_wrapper_id;
 
-       public string get_dynamic_cname () {
-               if (dynamic_cname == null) {
-                       dynamic_cname = "dynamic_%s%d_".printf (node.name, signal_wrapper_id++);
-               }
-               return dynamic_cname;
+       public override string get_dynamic_signal_cname (DynamicSignal node) {
+               return "dynamic_%s%d_".printf (node.name, signal_wrapper_id++);
        }
 
-       public string get_connect_wrapper_name () {
+       public override string get_dynamic_signal_connect_wrapper_name (DynamicSignal node) {
                var dynamic_signal = (DynamicSignal) node;
 
-               if (connect_wrapper_name == null) {
-                       connect_wrapper_name = "_%sconnect".printf (get_dynamic_cname ());
-                       var func = new CCodeFunction (connect_wrapper_name, "void");
-                       func.add_parameter (new CCodeFormalParameter ("obj", "gpointer"));
-                       func.add_parameter (new CCodeFormalParameter ("signal_name", "const char *"));
-                       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.dbus_object_type) {
-                               generate_dbus_connect_wrapper (block);
-                       } else 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 {
-                               Report.error (node.source_reference, "dynamic signals are not supported for `%s'".printf (dynamic_signal.dynamic_type.to_string ()));
-                       }
+               string connect_wrapper_name = "_%sconnect".printf (get_dynamic_signal_cname (node));
+               var func = new CCodeFunction (connect_wrapper_name, "void");
+               func.add_parameter (new CCodeFormalParameter ("obj", "gpointer"));
+               func.add_parameter (new CCodeFormalParameter ("signal_name", "const char *"));
+               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.dbus_object_type) {
+                       generate_dbus_connect_wrapper (node, block);
+               } else if (dynamic_signal.dynamic_type.data_type != null
+                          && dynamic_signal.dynamic_type.data_type.is_subtype_of (codegen.gobject_type)) {
+                       generate_gobject_connect_wrapper (node, block);
+               } else {
+                       Report.error (node.source_reference, "dynamic signals are not supported for `%s'".printf (dynamic_signal.dynamic_type.to_string ()));
+               }
 
-                       // append to C source file
-                       codegen.source_type_member_declaration.append (func.copy ());
+               // append to C source file
+               codegen.source_type_member_declaration.append (func.copy ());
 
-                       func.block = block;
-                       codegen.source_type_member_definition.append (func);
-               }
+               func.block = block;
+               codegen.source_type_member_definition.append (func);
 
                return connect_wrapper_name;
        }
 
-       public string get_disconnect_wrapper_name () {
+       public override string get_dynamic_signal_disconnect_wrapper_name (DynamicSignal node) {
                var dynamic_signal = (DynamicSignal) node;
 
-               if (disconnect_wrapper_name == null) {
-                       disconnect_wrapper_name = "_%sdisconnect".printf (get_dynamic_cname ());
-                       var func = new CCodeFunction (disconnect_wrapper_name, "void");
-                       func.add_parameter (new CCodeFormalParameter ("obj", "gpointer"));
-                       func.add_parameter (new CCodeFormalParameter ("signal_name", "const char *"));
-                       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.dbus_object_type) {
-                               generate_dbus_disconnect_wrapper (block);
-                       } else {
-                               Report.error (node.source_reference, "dynamic signals are not supported for `%s'".printf (dynamic_signal.dynamic_type.to_string ()));
-                       }
+               string disconnect_wrapper_name = "_%sdisconnect".printf (get_dynamic_signal_cname (node));
+               var func = new CCodeFunction (disconnect_wrapper_name, "void");
+               func.add_parameter (new CCodeFormalParameter ("obj", "gpointer"));
+               func.add_parameter (new CCodeFormalParameter ("signal_name", "const char *"));
+               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.dbus_object_type) {
+                       generate_dbus_disconnect_wrapper (node, block);
+               } else {
+                       Report.error (node.source_reference, "dynamic signals are not supported for `%s'".printf (dynamic_signal.dynamic_type.to_string ()));
+               }
 
-                       // append to C source file
-                       codegen.source_type_member_declaration.append (func.copy ());
+               // append to C source file
+               codegen.source_type_member_declaration.append (func.copy ());
 
-                       func.block = block;
-                       codegen.source_type_member_definition.append (func);
-               }
+               func.block = block;
+               codegen.source_type_member_definition.append (func);
 
                return disconnect_wrapper_name;
        }
 
-       void generate_gobject_connect_wrapper (CCodeBlock block) {
+       void generate_gobject_connect_wrapper (DynamicSignal node, CCodeBlock block) {
                var dynamic_signal = (DynamicSignal) node;
 
                var m = (Method) dynamic_signal.handler.symbol_reference;
@@ -130,7 +115,7 @@ public class Vala.CCodeDynamicSignalBinding : CCodeBinding {
                block.add_statement (new CCodeExpressionStatement (call));
        }
 
-       void generate_dbus_connect_wrapper (CCodeBlock block) {
+       void generate_dbus_connect_wrapper (DynamicSignal node, CCodeBlock block) {
                var dynamic_signal = (DynamicSignal) node;
 
                var m = (Method) dynamic_signal.handler.symbol_reference;
@@ -197,7 +182,7 @@ public class Vala.CCodeDynamicSignalBinding : CCodeBinding {
                block.add_statement (new CCodeExpressionStatement (call));
        }
 
-       void generate_dbus_disconnect_wrapper (CCodeBlock block) {
+       void generate_dbus_disconnect_wrapper (DynamicSignal node, CCodeBlock block) {
                var dynamic_signal = (DynamicSignal) node;
 
                var call = new CCodeFunctionCall (new CCodeIdentifier ("dbus_g_proxy_disconnect_signal"));
index b1d50317e4550ef6c94b72b28922be420bf49bea..c09cbcc0a68618a68e44ecef26f180a497c28b31 100644 (file)
@@ -3973,7 +3973,7 @@ public class Vala.CCodeGenerator : CodeGenerator {
                var sig = d.parent_symbol as Signal;
                var dynamic_sig = sig as DynamicSignal;
                if (dynamic_sig != null) {
-                       delegate_name = dynamic_signal_binding (dynamic_sig).get_dynamic_cname ();
+                       delegate_name = head.get_dynamic_signal_cname (dynamic_sig);
                } else if (sig != null) {
                        delegate_name = sig.parent_symbol.get_lower_case_cprefix () + sig.get_cname ();
                } else {
@@ -4367,16 +4367,4 @@ public class Vala.CCodeGenerator : CodeGenerator {
                }
                return node.ccodenode;
        }
-
-       public override CodeBinding? create_dynamic_signal_binding (DynamicSignal node) {
-               return new CCodeDynamicSignalBinding (this, node);
-       }
-
-       public CCodeBinding? code_binding (CodeNode node) {
-               return (CCodeBinding) node.get_code_binding (this);
-       }
-
-       public CCodeDynamicSignalBinding dynamic_signal_binding (DynamicSignal node) {
-               return (CCodeDynamicSignalBinding) node.get_code_binding (this);
-       }
 }
index 2a33c978bf71dffec55e9c7a41ac611f94f5f2fc..0f8875b3b586e492a6aefe5fbb23c6e2d757b63e 100644 (file)
@@ -131,4 +131,16 @@ public abstract class Vala.CCodeModule {
        public virtual string get_dynamic_property_setter_cname (DynamicProperty node) {
                return next.get_dynamic_property_setter_cname (node);
        }
+
+       public virtual string get_dynamic_signal_cname (DynamicSignal node) {
+               return next.get_dynamic_signal_cname (node);
+       }
+
+       public virtual string get_dynamic_signal_connect_wrapper_name (DynamicSignal node) {
+               return next.get_dynamic_signal_connect_wrapper_name (node);
+       }
+
+       public virtual string get_dynamic_signal_disconnect_wrapper_name (DynamicSignal node) {
+               return next.get_dynamic_signal_disconnect_wrapper_name (node);
+       }
 }
index ef4657ed29165f1b994c4617794a6a2eda3fb594..53340d762d808a8ef52cfecc2cac8265f6a605c7 100644 (file)
@@ -35,7 +35,6 @@ libvalacore_la_VALASOURCES = \
        valacharacterliteral.vala \
        valaclass.vala \
        valaclasstype.vala \
-       valacodebinding.vala \
        valacodecontext.vala \
        valacodegenerator.vala \
        valacodenode.vala \
diff --git a/vala/valacodebinding.vala b/vala/valacodebinding.vala
deleted file mode 100644 (file)
index a64a2fe..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/* valacodebinding.vala
- *
- * Copyright (C) 2007-2008  Jürg Billeter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
-
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
- *
- * Author:
- *     Jürg Billeter <j@bitron.ch>
- */
-
-using GLib;
-
-/**
- * The link between a source code node and generated code.
- */
-public abstract class Vala.CodeBinding {
-}
index d587e6f543085f9fa478be81bebce744db891e24..43ce9011fec0ae4d462e4c3b3b990a86148ecf4c 100644 (file)
@@ -33,8 +33,4 @@ public class Vala.CodeGenerator : CodeVisitor {
         */
        public virtual void emit (CodeContext context) {
        }
-
-       public virtual CodeBinding? create_dynamic_signal_binding (DynamicSignal node) {
-               return null;
-       }
 }
index bef68624c5fe8353b5b82c7214a3235a6ca9d7de..9379ac59dd0ffe101d79ad2c6f931c0bc47cbd11 100644 (file)
@@ -153,7 +153,6 @@ public abstract class Vala.CodeNode {
                return null;
        }
 
-       private CodeBinding? code_binding;
        private CCodeNode? _ccodenode;
 
        /**
@@ -172,23 +171,4 @@ public abstract class Vala.CodeNode {
 
                return str.append (" */").str;
        }
-
-       /**
-        * Returns the binding to the generated code.
-        *
-        * @return code binding
-        */
-       public CodeBinding? get_code_binding (CodeGenerator codegen) {
-               if (code_binding == null) {
-                       code_binding = create_code_binding (codegen);
-               }
-               return code_binding;
-       }
-
-       /**
-        * Creates the binding to the generated code.
-        */
-       public virtual CodeBinding? create_code_binding (CodeGenerator codegen) {
-               return null;
-       }
 }
index a8d65f6697483fea25cab74c503a12aa0e6604cd..96e4216aa654e5bf4b6ab1e5efcb2a1976e7858c 100644 (file)
@@ -37,8 +37,4 @@ public class Vala.DynamicSignal : Signal {
                this.return_type = return_type;
                this.source_reference = source_reference;
        }
-
-       public override CodeBinding? create_code_binding (CodeGenerator codegen) {
-               return codegen.create_dynamic_signal_binding (this);
-       }
 }