summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog20
-rw-r--r--gobject/Makefile.am5
-rw-r--r--gobject/valaccodeassignmentbinding.vala2
-rw-r--r--gobject/valaccodebasemodule.vala41
-rw-r--r--gobject/valaccodebinding.vala46
-rw-r--r--gobject/valaccodeclassbinding.vala2
-rw-r--r--gobject/valaccodecreationmethodbinding.vala57
-rw-r--r--gobject/valaccodegenerator.vala33
-rw-r--r--gobject/valaccodeinvocationexpressionbinding.vala2
-rw-r--r--gobject/valaccodememberaccessbinding.vala3
-rw-r--r--gobject/valaccodemethodmodule.vala (renamed from gobject/valaccodemethodbinding.vala)57
-rw-r--r--gobject/valaccodemodule.vala36
-rw-r--r--gobject/valadbusmodule.vala (renamed from gobject/valaccodedynamicmethodbinding.vala)15
-rw-r--r--vala/valacodegenerator.vala12
-rw-r--r--vala/valacreationmethod.vala4
-rw-r--r--vala/valadynamicmethod.vala4
-rw-r--r--vala/valamethod.vala4
17 files changed, 153 insertions, 190 deletions
diff --git a/ChangeLog b/ChangeLog
index 1d02e62dd..6fc406f90 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,25 @@
2008-10-24 Jürg Billeter <j@bitron.ch>
+ * vala/valacodegenerator.vala:
+ * vala/valacreationmethod.vala:
+ * vala/valadynamicmethod.vala:
+ * vala/valamethod.vala:
+ * gobject/Makefile.am:
+ * gobject/valaccodeassignmentbinding.vala:
+ * gobject/valaccodebasemodule.vala:
+ * gobject/valaccodebinding.vala:
+ * gobject/valaccodeclassbinding.vala:
+ * gobject/valaccodegenerator.vala:
+ * gobject/valaccodeinvocationexpressionbinding.vala:
+ * gobject/valaccodememberaccessbinding.vala:
+ * gobject/valaccodemethodmodule.vala:
+ * gobject/valaccodemodule.vala:
+ * gobject/valadbusmodule.vala:
+
+ Add CCodeMethodModule and DBusModule
+
+2008-10-24 Jürg Billeter <j@bitron.ch>
+
* gobject/valaccodebasemodule.vala:
* gobject/valaccodegenerator.vala:
* gobject/valaccodemodule.vala:
diff --git a/gobject/Makefile.am b/gobject/Makefile.am
index 8193b6c69..e5b6e6e9a 100644
--- a/gobject/Makefile.am
+++ b/gobject/Makefile.am
@@ -18,8 +18,6 @@ libvala_la_VALASOURCES = \
valaccodebinding.vala \
valaccodeclassbinding.vala \
valaccodecompiler.vala \
- valaccodecreationmethodbinding.vala \
- valaccodedynamicmethodbinding.vala \
valaccodedynamicpropertybinding.vala \
valaccodedynamicsignalbinding.vala \
valaccodeelementaccessbinding.vala \
@@ -31,11 +29,12 @@ libvala_la_VALASOURCES = \
valaccodeinterfacebinding.vala \
valaccodeinvocationexpressionbinding.vala \
valaccodememberaccessbinding.vala \
- valaccodemethodbinding.vala \
+ valaccodemethodmodule.vala \
valaccodemodule.vala \
valaccodeobjecttypesymbolbinding.vala \
valaccodetypesymbolbinding.vala \
valaclassregisterfunction.vala \
+ valadbusmodule.vala \
valagirwriter.vala \
valainterfaceregisterfunction.vala \
valatyperegisterfunction.vala \
diff --git a/gobject/valaccodeassignmentbinding.vala b/gobject/valaccodeassignmentbinding.vala
index 12ce8e340..4e2fd9e6d 100644
--- a/gobject/valaccodeassignmentbinding.vala
+++ b/gobject/valaccodeassignmentbinding.vala
@@ -41,7 +41,7 @@ public class Vala.CCodeAssignmentBinding : CCodeExpressionBinding {
var prop = (Property) assignment.left.symbol_reference;
if (prop.set_accessor.construction && codegen.current_type_symbol is Class && codegen.current_class.is_subtype_of (codegen.gobject_type) && codegen.in_creation_method) {
- codenode = get_construct_property_assignment (prop.get_canonical_cconstant (), prop.property_type, (CCodeExpression) assignment.right.ccodenode);
+ codenode = head.get_construct_property_assignment (prop.get_canonical_cconstant (), prop.property_type, (CCodeExpression) assignment.right.ccodenode);
} else {
CCodeExpression cexpr = (CCodeExpression) assignment.right.ccodenode;
diff --git a/gobject/valaccodebasemodule.vala b/gobject/valaccodebasemodule.vala
index 43b9aa215..0c0ac264d 100644
--- a/gobject/valaccodebasemodule.vala
+++ b/gobject/valaccodebasemodule.vala
@@ -27,4 +27,45 @@ public class Vala.CCodeBaseModule : CCodeModule {
public CCodeBaseModule (CCodeGenerator codegen, CCodeModule? next) {
base (codegen, next);
}
+
+ public override void emit (CodeContext context) {
+ }
+
+ public override CCodeIdentifier get_value_setter_function (DataType type_reference) {
+ if (type_reference.data_type != null) {
+ return new CCodeIdentifier (type_reference.data_type.get_set_value_function ());
+ } else {
+ return new CCodeIdentifier ("g_value_set_pointer");
+ }
+ }
+
+ public override CCodeExpression get_construct_property_assignment (CCodeConstant canonical_cconstant, DataType property_type, CCodeExpression value) {
+ // this property is used as a construction parameter
+ var cpointer = new CCodeIdentifier ("__params_it");
+
+ var ccomma = new CCodeCommaExpression ();
+ // set name in array for current parameter
+ var cnamemember = new CCodeMemberAccess.pointer (cpointer, "name");
+ var cnameassign = new CCodeAssignment (cnamemember, canonical_cconstant);
+ ccomma.append_expression (cnameassign);
+
+ var gvaluearg = new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeMemberAccess.pointer (cpointer, "value"));
+
+ // initialize GValue in array for current parameter
+ var cvalueinit = new CCodeFunctionCall (new CCodeIdentifier ("g_value_init"));
+ cvalueinit.add_argument (gvaluearg);
+ cvalueinit.add_argument (new CCodeIdentifier (property_type.get_type_id ()));
+ ccomma.append_expression (cvalueinit);
+
+ // set GValue for current parameter
+ var cvalueset = new CCodeFunctionCall (get_value_setter_function (property_type));
+ cvalueset.add_argument (gvaluearg);
+ cvalueset.add_argument (value);
+ ccomma.append_expression (cvalueset);
+
+ // move pointer to next parameter in array
+ ccomma.append_expression (new CCodeUnaryExpression (CCodeUnaryOperator.POSTFIX_INCREMENT, cpointer));
+
+ return ccomma;
+ }
}
diff --git a/gobject/valaccodebinding.vala b/gobject/valaccodebinding.vala
index 525ad7641..9a424272b 100644
--- a/gobject/valaccodebinding.vala
+++ b/gobject/valaccodebinding.vala
@@ -31,58 +31,20 @@ public abstract class Vala.CCodeBinding : CodeBinding {
*/
public CCodeGenerator codegen { get; set; }
+ public CCodeModule head {
+ get { return codegen.head; }
+ }
+
/**
* Generate code for this source code node.
*/
public virtual void emit () {
}
- public CCodeIdentifier get_value_setter_function (DataType type_reference) {
- if (type_reference.data_type != null) {
- return new CCodeIdentifier (type_reference.data_type.get_set_value_function ());
- } else {
- return new CCodeIdentifier ("g_value_set_pointer");
- }
- }
-
- public CCodeExpression get_construct_property_assignment (CCodeConstant canonical_cconstant, DataType property_type, CCodeExpression value) {
- // this property is used as a construction parameter
- var cpointer = new CCodeIdentifier ("__params_it");
-
- var ccomma = new CCodeCommaExpression ();
- // set name in array for current parameter
- var cnamemember = new CCodeMemberAccess.pointer (cpointer, "name");
- var cnameassign = new CCodeAssignment (cnamemember, canonical_cconstant);
- ccomma.append_expression (cnameassign);
-
- var gvaluearg = new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeMemberAccess.pointer (cpointer, "value"));
-
- // initialize GValue in array for current parameter
- var cvalueinit = new CCodeFunctionCall (new CCodeIdentifier ("g_value_init"));
- cvalueinit.add_argument (gvaluearg);
- cvalueinit.add_argument (new CCodeIdentifier (property_type.get_type_id ()));
- ccomma.append_expression (cvalueinit);
-
- // set GValue for current parameter
- var cvalueset = new CCodeFunctionCall (get_value_setter_function (property_type));
- cvalueset.add_argument (gvaluearg);
- cvalueset.add_argument (value);
- ccomma.append_expression (cvalueset);
-
- // move pointer to next parameter in array
- ccomma.append_expression (new CCodeUnaryExpression (CCodeUnaryOperator.POSTFIX_INCREMENT, cpointer));
-
- return ccomma;
- }
-
public CCodeBinding? code_binding (CodeNode node) {
return (CCodeBinding) node.get_code_binding (codegen);
}
- public CCodeMethodBinding method_binding (Method node) {
- return (CCodeMethodBinding) node.get_code_binding (codegen);
- }
-
public CCodeArrayCreationExpressionBinding array_creation_expression_binding (ArrayCreationExpression node) {
return (CCodeArrayCreationExpressionBinding) node.get_code_binding (codegen);
}
diff --git a/gobject/valaccodeclassbinding.vala b/gobject/valaccodeclassbinding.vala
index 585f4ece3..6535a4bcb 100644
--- a/gobject/valaccodeclassbinding.vala
+++ b/gobject/valaccodeclassbinding.vala
@@ -1162,7 +1162,7 @@ public class Vala.CCodeClassBinding : CCodeObjectTypeSymbolBinding {
var ccall = new CCodeFunctionCall (new CCodeIdentifier ("%s_get_%s".printf (prefix, prop.name)));
ccall.add_argument (cself);
var csetcall = new CCodeFunctionCall ();
- csetcall.call = get_value_setter_function (prop.property_type);
+ csetcall.call = head.get_value_setter_function (prop.property_type);
csetcall.add_argument (new CCodeIdentifier ("value"));
csetcall.add_argument (ccall);
ccase.add_statement (new CCodeExpressionStatement (csetcall));
diff --git a/gobject/valaccodecreationmethodbinding.vala b/gobject/valaccodecreationmethodbinding.vala
deleted file mode 100644
index 9c85145b9..000000000
--- a/gobject/valaccodecreationmethodbinding.vala
+++ /dev/null
@@ -1,57 +0,0 @@
-/* valaccodecreationmethodbinding.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;
-using Gee;
-
-/**
- * The link between a creation method and generated code.
- */
-public class Vala.CCodeCreationMethodBinding : CCodeMethodBinding {
- public CreationMethod creation_method { get; set; }
-
- public CCodeCreationMethodBinding (CCodeGenerator codegen, CreationMethod creation_method) {
- this.creation_method = creation_method;
- this.method = creation_method;
- this.codegen = codegen;
- }
-
- public override void emit () {
- var m = creation_method;
-
- if (m.body != null && codegen.current_type_symbol is Class && codegen.current_class.is_subtype_of (codegen.gobject_type)) {
- int n_params = 0;
- foreach (Statement stmt in m.body.get_statements ()) {
- var expr_stmt = stmt as ExpressionStatement;
- if (expr_stmt != null) {
- Property prop = expr_stmt.assigned_property ();
- if (prop != null && prop.set_accessor.construction) {
- n_params++;
- }
- }
- }
- m.n_construction_params = n_params;
- }
-
- base.emit ();
- }
-}
diff --git a/gobject/valaccodegenerator.vala b/gobject/valaccodegenerator.vala
index 19db446a1..8a122093d 100644
--- a/gobject/valaccodegenerator.vala
+++ b/gobject/valaccodegenerator.vala
@@ -28,7 +28,7 @@ using Gee;
* Code visitor generating C Code.
*/
public class Vala.CCodeGenerator : CodeGenerator {
- CCodeModule head;
+ public CCodeModule head;
public CodeContext context;
@@ -141,7 +141,9 @@ public class Vala.CCodeGenerator : CodeGenerator {
private Set<string> wrappers;
public CCodeGenerator () {
- this.head = new CCodeBaseModule (this, null);
+ head = new CCodeBaseModule (this, head);
+ head = new CCodeMethodModule (this, head);
+ head = new DBusModule (this, head);
predefined_marshal_set = new HashSet<string> (str_hash, str_equal);
predefined_marshal_set.add ("VOID:VOID");
@@ -741,11 +743,11 @@ public class Vala.CCodeGenerator : CodeGenerator {
}
public override void visit_method (Method m) {
- code_binding (m).emit ();
+ head.visit_method (m);
}
public override void visit_creation_method (CreationMethod m) {
- code_binding (m).emit ();
+ head.visit_creation_method (m);
}
public override void visit_formal_parameter (FormalParameter p) {
@@ -3416,7 +3418,7 @@ public class Vala.CCodeGenerator : CodeGenerator {
// cast the return value of the creation method back to the intended type if
// it requested a special C return type
- if (method_binding (m).get_custom_creturn_type () != null) {
+ if (head.get_custom_creturn_type (m) != null) {
creation_expr = new CCodeCastExpression (creation_expr, expr.type_reference.get_cname ());
}
} else if (expr.symbol_reference is ErrorCode) {
@@ -4367,19 +4369,6 @@ public class Vala.CCodeGenerator : CodeGenerator {
return new CCodeInterfaceBinding (this, node);
}
-
- public override CodeBinding? create_method_binding (Method node) {
- return new CCodeMethodBinding (this, node);
- }
-
- public override CodeBinding? create_dynamic_method_binding (DynamicMethod node) {
- return new CCodeDynamicMethodBinding (this, node);
- }
-
- public override CodeBinding? create_creation_method_binding (CreationMethod node) {
- return new CCodeCreationMethodBinding (this, node);
- }
-
public override CodeBinding? create_dynamic_property_binding (DynamicProperty node) {
return new CCodeDynamicPropertyBinding (this, node);
}
@@ -4412,14 +4401,6 @@ public class Vala.CCodeGenerator : CodeGenerator {
return (CCodeBinding) node.get_code_binding (this);
}
- public CCodeMethodBinding method_binding (Method node) {
- return (CCodeMethodBinding) node.get_code_binding (this);
- }
-
- public CCodeDynamicMethodBinding dynamic_method_binding (DynamicMethod node) {
- return (CCodeDynamicMethodBinding) node.get_code_binding (this);
- }
-
public CCodeDynamicPropertyBinding dynamic_property_binding (DynamicProperty node) {
return (CCodeDynamicPropertyBinding) node.get_code_binding (this);
}
diff --git a/gobject/valaccodeinvocationexpressionbinding.vala b/gobject/valaccodeinvocationexpressionbinding.vala
index 4b1d5ec21..0c9592a1c 100644
--- a/gobject/valaccodeinvocationexpressionbinding.vala
+++ b/gobject/valaccodeinvocationexpressionbinding.vala
@@ -157,7 +157,7 @@ public class Vala.CCodeInvocationExpressionBinding : CCodeExpressionBinding {
foreach (FormalParameter param in m.get_parameters ()) {
param.accept (codegen);
}
- codegen.dynamic_method_binding ((DynamicMethod) m).generate_wrapper ();
+ head.generate_dynamic_method_wrapper ((DynamicMethod) m);
} else if (m is CreationMethod) {
ccall_expr = new CCodeAssignment (new CCodeIdentifier ("self"), new CCodeCastExpression (ccall, codegen.current_class.get_cname () + "*"));
}
diff --git a/gobject/valaccodememberaccessbinding.vala b/gobject/valaccodememberaccessbinding.vala
index 6eae9ce5e..ff438a1ff 100644
--- a/gobject/valaccodememberaccessbinding.vala
+++ b/gobject/valaccodememberaccessbinding.vala
@@ -53,8 +53,7 @@ public class Vala.CCodeMemberAccessBinding : CCodeExpressionBinding {
}
if (m.base_method != null) {
- var binding = method_binding (m.base_method);
- if (!binding.has_wrapper) {
+ if (!head.method_has_wrapper (m.base_method)) {
var inst = pub_inst;
if (expr.inner != null && !expr.inner.is_pure ()) {
// instance expression has side-effects
diff --git a/gobject/valaccodemethodbinding.vala b/gobject/valaccodemethodmodule.vala
index 0deef082b..14cb9b16c 100644
--- a/gobject/valaccodemethodbinding.vala
+++ b/gobject/valaccodemethodmodule.vala
@@ -27,15 +27,17 @@ using Gee;
/**
* The link between a method and generated code.
*/
-public class Vala.CCodeMethodBinding : CCodeBinding {
- public Method method { get; set; }
+public class Vala.CCodeMethodModule : CCodeModule {
+ public CCodeMethodModule (CCodeGenerator codegen, CCodeModule? next) {
+ base (codegen, next);
+ }
- public bool has_wrapper {
- get { return (method.get_attribute ("NoWrapper") == null); }
+ public override bool method_has_wrapper (Method method) {
+ return (method.get_attribute ("NoWrapper") == null);
}
- public string? get_custom_creturn_type () {
- var attr = method.get_attribute ("CCode");
+ public override string? get_custom_creturn_type (Method m) {
+ var attr = m.get_attribute ("CCode");
if (attr != null) {
string type = attr.get_string ("type");
if (type != null) {
@@ -45,22 +47,15 @@ public class Vala.CCodeMethodBinding : CCodeBinding {
return null;
}
- string get_creturn_type (string default_value) {
- string type = get_custom_creturn_type ();
+ string get_creturn_type (Method m, string default_value) {
+ string type = get_custom_creturn_type (m);
if (type == null) {
return default_value;
}
return type;
}
- public CCodeMethodBinding (CCodeGenerator codegen, Method method) {
- this.method = method;
- this.codegen = codegen;
- }
-
- public override void emit () {
- var m = method;
-
+ public override void visit_method (Method m) {
Method old_method = codegen.current_method;
DataType old_return_type = codegen.current_return_type;
bool old_method_inner_error = codegen.current_method_inner_error;
@@ -165,7 +160,7 @@ public class Vala.CCodeMethodBinding : CCodeBinding {
}
}
- codegen.function = new CCodeFunction (m.get_real_cname (), get_creturn_type (creturn_type.get_cname ()));
+ codegen.function = new CCodeFunction (m.get_real_cname (), get_creturn_type (m, creturn_type.get_cname ()));
m.ccodenode = codegen.function;
if (m.is_inline) {
@@ -209,7 +204,7 @@ public class Vala.CCodeMethodBinding : CCodeBinding {
cparam_map.set (codegen.get_param_pos (m.cinstance_parameter_position), instance_param);
if (m.is_abstract || m.is_virtual) {
- var vdecl = new CCodeDeclaration (get_creturn_type (creturn_type.get_cname ()));
+ var vdecl = new CCodeDeclaration (get_creturn_type (m, creturn_type.get_cname ()));
vdeclarator = new CCodeFunctionDeclarator (m.vfunc_name);
vdecl.add_declarator (vdeclarator);
codegen.type_struct.add_declaration (vdecl);
@@ -486,7 +481,7 @@ public class Vala.CCodeMethodBinding : CCodeBinding {
cstmt = new CCodeReturnStatement (vcall);
} else {
/* store method return value for postconditions */
- var cdecl = new CCodeDeclaration (get_creturn_type (creturn_type.get_cname ()));
+ var cdecl = new CCodeDeclaration (get_creturn_type (m, creturn_type.get_cname ()));
cdecl.add_declarator (new CCodeVariableDeclarator.with_initializer ("result", vcall));
cstmt = cdecl;
}
@@ -569,8 +564,8 @@ public class Vala.CCodeMethodBinding : CCodeBinding {
if (codegen.current_type_symbol is Class) {
CCodeExpression cresult = new CCodeIdentifier ("self");
- if (get_custom_creturn_type () != null) {
- cresult = new CCodeCastExpression (cresult, get_custom_creturn_type ());
+ if (get_custom_creturn_type (m) != null) {
+ cresult = new CCodeCastExpression (cresult, get_custom_creturn_type (m));
}
var creturn = new CCodeReturnStatement ();
@@ -623,7 +618,7 @@ public class Vala.CCodeMethodBinding : CCodeBinding {
}
}
- public void generate_cparameters (Method m, DataType creturn_type, bool in_gtypeinstance_creation_method, Map<int,CCodeFormalParameter> cparam_map, CCodeFunction func, CCodeFunctionDeclarator? vdeclarator = null, Map<int,CCodeExpression>? carg_map = null, CCodeFunctionCall? vcall = null) {
+ public override void generate_cparameters (Method m, DataType creturn_type, bool in_gtypeinstance_creation_method, Map<int,CCodeFormalParameter> cparam_map, CCodeFunction func, CCodeFunctionDeclarator? vdeclarator = null, Map<int,CCodeExpression>? carg_map = null, CCodeFunctionCall? vcall = null) {
if (in_gtypeinstance_creation_method) {
// memory management for generic types
int type_param_index = 0;
@@ -896,4 +891,22 @@ public class Vala.CCodeMethodBinding : CCodeBinding {
}
return fundamental_class;
}
+
+ public override void visit_creation_method (CreationMethod m) {
+ if (m.body != null && codegen.current_type_symbol is Class && codegen.current_class.is_subtype_of (codegen.gobject_type)) {
+ int n_params = 0;
+ foreach (Statement stmt in m.body.get_statements ()) {
+ var expr_stmt = stmt as ExpressionStatement;
+ if (expr_stmt != null) {
+ Property prop = expr_stmt.assigned_property ();
+ if (prop != null && prop.set_accessor.construction) {
+ n_params++;
+ }
+ }
+ }
+ m.n_construction_params = n_params;
+ }
+
+ head.visit_method (m);
+ }
}
diff --git a/gobject/valaccodemodule.vala b/gobject/valaccodemodule.vala
index 847c5fe43..8918adfdd 100644
--- a/gobject/valaccodemodule.vala
+++ b/gobject/valaccodemodule.vala
@@ -49,8 +49,38 @@ public abstract class Vala.CCodeModule {
}
public virtual void emit (CodeContext context) {
- if (next != null) {
- next.emit (context);
- }
+ next.emit (context);
+ }
+
+ public virtual void visit_method (Method m) {
+ next.visit_method (m);
+ }
+
+ public virtual void visit_creation_method (CreationMethod m) {
+ next.visit_creation_method (m);
+ }
+
+ public virtual void generate_cparameters (Method m, DataType creturn_type, bool in_gtypeinstance_creation_method, Map<int,CCodeFormalParameter> cparam_map, CCodeFunction func, CCodeFunctionDeclarator? vdeclarator = null, Map<int,CCodeExpression>? carg_map = null, CCodeFunctionCall? vcall = null) {
+ next.generate_cparameters (m, creturn_type, in_gtypeinstance_creation_method, cparam_map, func, vdeclarator, carg_map, vcall);
+ }
+
+ public virtual string? get_custom_creturn_type (Method m) {
+ return next.get_custom_creturn_type (m);
+ }
+
+ public virtual void generate_dynamic_method_wrapper (DynamicMethod method) {
+ next.generate_dynamic_method_wrapper (method);
+ }
+
+ public virtual bool method_has_wrapper (Method method) {
+ return next.method_has_wrapper (method);
+ }
+
+ public virtual CCodeIdentifier get_value_setter_function (DataType type_reference) {
+ return next.get_value_setter_function (type_reference);
+ }
+
+ 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);
}
}
diff --git a/gobject/valaccodedynamicmethodbinding.vala b/gobject/valadbusmodule.vala
index 81ccc6a23..af7871f55 100644
--- a/gobject/valaccodedynamicmethodbinding.vala
+++ b/gobject/valadbusmodule.vala
@@ -1,4 +1,4 @@
-/* valaccodedynamicmethodbinding.vala
+/* valadbusmodule.vala
*
* Copyright (C) 2007-2008 Jürg Billeter
*
@@ -26,13 +26,12 @@ using Gee;
/**
* The link between a dynamic method and generated code.
*/
-public class Vala.CCodeDynamicMethodBinding : CCodeMethodBinding {
- public CCodeDynamicMethodBinding (CCodeGenerator codegen, DynamicMethod method) {
- this.method = method;
- this.codegen = codegen;
+public class Vala.DBusModule : CCodeModule {
+ public DBusModule (CCodeGenerator codegen, CCodeModule? next) {
+ base (codegen, next);
}
- public void generate_wrapper () {
+ public override void generate_dynamic_method_wrapper (DynamicMethod method) {
var dynamic_method = (DynamicMethod) method;
var func = new CCodeFunction (method.get_cname (), method.return_type.get_cname ());
@@ -46,7 +45,7 @@ public class Vala.CCodeDynamicMethodBinding : CCodeMethodBinding {
var block = new CCodeBlock ();
if (dynamic_method.dynamic_type.data_type == codegen.dbus_object_type) {
- generate_dbus_method_wrapper (block);
+ generate_dbus_method_wrapper (method, block);
} else {
Report.error (method.source_reference, "dynamic methods are not supported for `%s'".printf (dynamic_method.dynamic_type.to_string ()));
}
@@ -58,7 +57,7 @@ public class Vala.CCodeDynamicMethodBinding : CCodeMethodBinding {
codegen.source_type_member_definition.append (func);
}
- void generate_dbus_method_wrapper (CCodeBlock block) {
+ void generate_dbus_method_wrapper (Method method, CCodeBlock block) {
var dynamic_method = (DynamicMethod) method;
var expr = dynamic_method.invocation;
diff --git a/vala/valacodegenerator.vala b/vala/valacodegenerator.vala
index 1c2b9c108..b37340ad0 100644
--- a/vala/valacodegenerator.vala
+++ b/vala/valacodegenerator.vala
@@ -42,18 +42,6 @@ public class Vala.CodeGenerator : CodeVisitor {
return null;
}
- public virtual CodeBinding? create_method_binding (Method node) {
- return null;
- }
-
- public virtual CodeBinding? create_dynamic_method_binding (DynamicMethod node) {
- return null;
- }
-
- public virtual CodeBinding? create_creation_method_binding (CreationMethod node) {
- return null;
- }
-
public virtual CodeBinding? create_dynamic_property_binding (DynamicProperty node) {
return null;
}
diff --git a/vala/valacreationmethod.vala b/vala/valacreationmethod.vala
index 8336e96c9..9fcbc72a5 100644
--- a/vala/valacreationmethod.vala
+++ b/vala/valacreationmethod.vala
@@ -102,10 +102,6 @@ public class Vala.CreationMethod : Method {
}
}
- public override CodeBinding? create_code_binding (CodeGenerator codegen) {
- return codegen.create_creation_method_binding (this);
- }
-
public override string get_real_cname () {
var parent = parent_symbol as Class;
diff --git a/vala/valadynamicmethod.vala b/vala/valadynamicmethod.vala
index 6b175872f..94ed2e31c 100644
--- a/vala/valadynamicmethod.vala
+++ b/vala/valadynamicmethod.vala
@@ -53,8 +53,4 @@ public class Vala.DynamicMethod : Method {
}
return cname;
}
-
- public override CodeBinding? create_code_binding (CodeGenerator codegen) {
- return codegen.create_dynamic_method_binding (this);
- }
}
diff --git a/vala/valamethod.vala b/vala/valamethod.vala
index c0fa0fa4b..6cebf4744 100644
--- a/vala/valamethod.vala
+++ b/vala/valamethod.vala
@@ -510,10 +510,6 @@ public class Vala.Method : Member {
}
}
- public override CodeBinding? create_code_binding (CodeGenerator codegen) {
- return codegen.create_method_binding (this);
- }
-
private void find_base_methods () {
if (base_methods_valid) {
return;