]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Enable real_cname CCode for property accessors
authorLuca Bruno <lucabru@src.gnome.org>
Thu, 1 Sep 2011 11:32:54 +0000 (13:32 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Thu, 1 Sep 2011 11:38:19 +0000 (13:38 +0200)
codegen/valaccodeattribute.vala
codegen/valaccodebasemodule.vala
codegen/valagtypemodule.vala

index 19e3de1f9e7833a7c9d0b99f278651caf10535ef..48277d90ca7c52bd010687f552d3b663475553b7 100644 (file)
@@ -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 () {
index f8897980b80a9c16cdb3d5dc3786adb535874cde..76fc9d6f826fe2842daf13f07ebda1682dd2a88a 100644 (file)
@@ -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) {
index d7621dce976f9e28fb02d122e6867e4ac4ee7472..745f1365a8aebf8b9ba6a1a5bdc998e1247f9e9b 100644 (file)
@@ -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);
                                }