[vala/staging] codegen: Cast vfunc pointer for property-accessor override
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/staging] codegen: Cast vfunc pointer for property-accessor override
- Date: Thu, 2 Mar 2017 08:01:26 +0000 (UTC)
commit 82951ca5406bf67b79a7ed9a3963c28ab65498bb
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Thu Mar 2 08:58:44 2017 +0100
codegen: Cast vfunc pointer for property-accessor override
codegen/valagtypemodule.vala | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/codegen/valagtypemodule.vala b/codegen/valagtypemodule.vala
index 11d2f6d..8196971 100644
--- a/codegen/valagtypemodule.vala
+++ b/codegen/valagtypemodule.vala
@@ -1239,7 +1239,7 @@ public class Vala.GTypeModule : GErrorModule {
if (prop.base_property == null) {
continue;
}
- var base_type = prop.base_property.parent_symbol;
+ var base_type = (ObjectTypeSymbol) prop.base_property.parent_symbol;
var ccast = new CCodeFunctionCall (new CCodeIdentifier ("%s_CLASS".printf
(get_ccode_upper_case_name (base_type))));
ccast.add_argument (new CCodeIdentifier ("klass"));
@@ -1247,11 +1247,15 @@ public class Vala.GTypeModule : GErrorModule {
if (!get_ccode_no_accessor_method (prop.base_property) &&
!get_ccode_concrete_accessor (prop.base_property)) {
if (prop.get_accessor != null) {
string cname = CCodeBaseModule.get_ccode_real_name
(prop.get_accessor);
- ccode.add_assignment (new CCodeMemberAccess.pointer (ccast,
"get_%s".printf (prop.name)), new CCodeIdentifier (cname));
+ CCodeExpression cfunc = new CCodeIdentifier (cname);
+ cfunc = cast_property_accessor_pointer (prop.get_accessor, cfunc,
base_type);
+ ccode.add_assignment (new CCodeMemberAccess.pointer (ccast,
"get_%s".printf (prop.name)), cfunc);
}
if (prop.set_accessor != null) {
string cname = CCodeBaseModule.get_ccode_real_name
(prop.set_accessor);
- ccode.add_assignment (new CCodeMemberAccess.pointer (ccast,
"set_%s".printf (prop.name)), new CCodeIdentifier (cname));
+ CCodeExpression cfunc = new CCodeIdentifier (cname);
+ cfunc = cast_property_accessor_pointer (prop.set_accessor, cfunc,
base_type);
+ ccode.add_assignment (new CCodeMemberAccess.pointer (ccast,
"set_%s".printf (prop.name)), cfunc);
}
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]