vala r1060 - in trunk: . gobject
- From: rasa svn gnome org
- To: svn-commits-list gnome org
- Subject: vala r1060 - in trunk: . gobject
- Date: Thu, 28 Feb 2008 09:04:32 +0000 (GMT)
Author: rasa
Date: Thu Feb 28 09:04:31 2008
New Revision: 1060
URL: http://svn.gnome.org/viewvc/vala?rev=1060&view=rev
Log:
2008-02-28 Raffaele Sandrini <raffaele sandrini ch>
* gobject/valaccodegeneratormethod.vala: fix instance delegate handling
for virtual method wrappers
Modified:
trunk/ChangeLog
trunk/gobject/valaccodegeneratormethod.vala
Modified: trunk/gobject/valaccodegeneratormethod.vala
==============================================================================
--- trunk/gobject/valaccodegeneratormethod.vala (original)
+++ trunk/gobject/valaccodegeneratormethod.vala Thu Feb 28 09:04:31 2008
@@ -479,6 +479,16 @@
cparam_map.set (get_param_pos (param.cparameter_position), (CCodeFormalParameter) param.ccodenode);
carg_map.set (get_param_pos (param.cparameter_position), new CCodeIdentifier (param.name));
+
+ if (param.type_reference is DelegateType) {
+ var deleg_type = (DelegateType) param.type_reference;
+ var d = deleg_type.delegate_symbol;
+ if (d.instance) {
+ var cparam = new CCodeFormalParameter (get_delegate_target_cname (param.name), "void*");
+ cparam_map.set (get_param_pos (param.cdelegate_target_parameter_position), cparam);
+ carg_map.set (get_param_pos (param.cdelegate_target_parameter_position), new CCodeIdentifier (cparam.name));
+ }
+ }
}
// return array length if appropriate
@@ -490,6 +500,15 @@
cparam_map.set (get_param_pos (m.carray_length_parameter_position), cparam);
carg_map.set (get_param_pos (m.carray_length_parameter_position), new CCodeIdentifier (cparam.name));
}
+ } else if (creturn_type is DelegateType) {
+ // return delegate target if appropriate
+ var deleg_type = (DelegateType) creturn_type;
+ var d = deleg_type.delegate_symbol;
+ if (d.instance) {
+ var cparam = new CCodeFormalParameter (get_delegate_target_cname ("result"), "void*");
+ cparam_map.set (get_param_pos (m.cdelegate_target_parameter_position), cparam);
+ carg_map.set (get_param_pos (m.cdelegate_target_parameter_position), new CCodeIdentifier (cparam.name));
+ }
}
if (m.get_error_domains ().size > 0) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]