[vala] codegen: Enable real_cname CCode for property accessors



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]