diff options
-rw-r--r-- | ChangeLog | 20 | ||||
-rw-r--r-- | gobject/Makefile.am | 5 | ||||
-rw-r--r-- | gobject/valaccodeassignmentbinding.vala | 2 | ||||
-rw-r--r-- | gobject/valaccodebasemodule.vala | 41 | ||||
-rw-r--r-- | gobject/valaccodebinding.vala | 46 | ||||
-rw-r--r-- | gobject/valaccodeclassbinding.vala | 2 | ||||
-rw-r--r-- | gobject/valaccodecreationmethodbinding.vala | 57 | ||||
-rw-r--r-- | gobject/valaccodegenerator.vala | 33 | ||||
-rw-r--r-- | gobject/valaccodeinvocationexpressionbinding.vala | 2 | ||||
-rw-r--r-- | gobject/valaccodememberaccessbinding.vala | 3 | ||||
-rw-r--r-- | gobject/valaccodemethodmodule.vala (renamed from gobject/valaccodemethodbinding.vala) | 57 | ||||
-rw-r--r-- | gobject/valaccodemodule.vala | 36 | ||||
-rw-r--r-- | gobject/valadbusmodule.vala (renamed from gobject/valaccodedynamicmethodbinding.vala) | 15 | ||||
-rw-r--r-- | vala/valacodegenerator.vala | 12 | ||||
-rw-r--r-- | vala/valacreationmethod.vala | 4 | ||||
-rw-r--r-- | vala/valadynamicmethod.vala | 4 | ||||
-rw-r--r-- | vala/valamethod.vala | 4 |
17 files changed, 153 insertions, 190 deletions
@@ -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; |