From: Luca Bruno Date: Thu, 1 Sep 2011 11:32:54 +0000 (+0200) Subject: codegen: Enable real_cname CCode for property accessors X-Git-Tag: 0.13.4~12 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=eea37a26932b42b7ee645a625beac71cf9ca7c3c;p=thirdparty%2Fvala.git codegen: Enable real_cname CCode for property accessors --- diff --git a/codegen/valaccodeattribute.vala b/codegen/valaccodeattribute.vala index 19e3de1f9..48277d90c 100644 --- a/codegen/valaccodeattribute.vala +++ b/codegen/valaccodeattribute.vala @@ -1144,8 +1144,8 @@ public class Vala.CCodeAttribute : AttributeCache { } private string get_default_real_name () { - var m = (Method) sym; - if (m is CreationMethod) { + if (sym is CreationMethod) { + var m = (CreationMethod) sym; var parent = m.parent_symbol as Class; if (parent == null || parent.is_compact) { @@ -1163,13 +1163,27 @@ public class Vala.CCodeAttribute : AttributeCache { } else { return "%s%s_%s".printf (CCodeBaseModule.get_ccode_lower_case_prefix (parent), infix, m.name); } - } else { + } else if (sym is Method) { + var m = (Method) sym; if (m.base_method != null || m.base_interface_method != null) { return "%sreal_%s".printf (CCodeBaseModule.get_ccode_lower_case_prefix (m.parent_symbol), m.name); } else { return name; } + } else if (sym is PropertyAccessor) { + var acc = (PropertyAccessor) sym; + var prop = (Property) acc.prop; + if (prop.base_property != null || prop.base_interface_property != null) { + if (acc.readable) { + return "%sreal_get_%s".printf (CCodeBaseModule.get_ccode_lower_case_prefix (prop.parent_symbol), prop.name); + } else { + return "%sreal_set_%s".printf (CCodeBaseModule.get_ccode_lower_case_prefix (prop.parent_symbol), prop.name); + } + } else { + return name; + } } + assert_not_reached (); } private string get_default_const_name () { diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index f8897980b..76fc9d6f8 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -1569,16 +1569,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { if (!prop.is_abstract) { bool is_virtual = prop.base_property != null || prop.base_interface_property != null; - string cname; - if (is_virtual) { - if (acc.readable) { - cname = "%s_real_get_%s".printf (get_ccode_lower_case_name (t, null), prop.name); - } else { - cname = "%s_real_set_%s".printf (get_ccode_lower_case_name (t, null), prop.name); - } - } else { - cname = get_ccode_name (acc); - } + string cname = get_ccode_real_name (acc); CCodeFunction function; if (acc.writable || acc.construction || returns_real_struct) { @@ -5754,8 +5745,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { return m.get_attribute_bool ("CCode", "simple_generics"); } - public static string get_ccode_real_name (Method m) { - return get_ccode_attribute(m).real_name; + public static string get_ccode_real_name (Symbol sym) { + return get_ccode_attribute(sym).real_name; } public static string get_ccode_vfunc_name (Method m) { diff --git a/codegen/valagtypemodule.vala b/codegen/valagtypemodule.vala index d7621dce9..745f1365a 100644 --- a/codegen/valagtypemodule.vala +++ b/codegen/valagtypemodule.vala @@ -1251,11 +1251,11 @@ public class Vala.GTypeModule : GErrorModule { ccast.add_argument (new CCodeIdentifier ("klass")); if (prop.get_accessor != null) { - string cname = "%s_real_get_%s".printf (get_ccode_lower_case_name (cl, null), prop.name); + 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)); } if (prop.set_accessor != null) { - string cname = "%s_real_set_%s".printf (get_ccode_lower_case_name (cl, null), prop.name); + 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)); } } @@ -1372,7 +1372,7 @@ public class Vala.GTypeModule : GErrorModule { var ciface = new CCodeIdentifier ("iface"); if (prop.get_accessor != null) { - string cname = "%s_real_get_%s".printf (get_ccode_lower_case_name (cl, null), prop.name); + string cname = CCodeBaseModule.get_ccode_real_name (prop.get_accessor); if (prop.is_abstract || prop.is_virtual) { cname = "%s_get_%s".printf (get_ccode_lower_case_name (cl, null), prop.name); } @@ -1384,7 +1384,7 @@ public class Vala.GTypeModule : GErrorModule { ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "get_%s".printf (prop.name)), cfunc); } if (prop.set_accessor != null) { - string cname = "%s_real_set_%s".printf (get_ccode_lower_case_name (cl, null), prop.name); + string cname = CCodeBaseModule.get_ccode_real_name (prop.set_accessor); if (prop.is_abstract || prop.is_virtual) { cname = "%s_set_%s".printf (get_ccode_lower_case_name (cl, null), prop.name); }