[vala] codegen: Enable real_cname CCode for property accessors
- From: Luca Bruno <lucabru src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] codegen: Enable real_cname CCode for property accessors
- Date: Thu, 1 Sep 2011 14:22:50 +0000 (UTC)
commit eea37a26932b42b7ee645a625beac71cf9ca7c3c
Author: Luca Bruno <lucabru src gnome org>
Date: Thu Sep 1 13:32:54 2011 +0200
codegen: Enable real_cname CCode for property accessors
codegen/valaccodeattribute.vala | 20 +++++++++++++++++---
codegen/valaccodebasemodule.vala | 15 +++------------
codegen/valagtypemodule.vala | 8 ++++----
3 files changed, 24 insertions(+), 19 deletions(-)
---
diff --git a/codegen/valaccodeattribute.vala b/codegen/valaccodeattribute.vala
index 19e3de1..48277d9 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 f889798..76fc9d6 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 d7621dc..745f136 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);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]