]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
WIP Support CCode.cname on property
authorRico Tzschichholz <ricotz@ubuntu.com>
Wed, 24 Feb 2021 08:39:02 +0000 (09:39 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Mon, 20 Nov 2023 11:57:25 +0000 (12:57 +0100)
Fixes https://gitlab.gnome.org/GNOME/vala/issues/1142

codegen/valaccodeattribute.vala
codegen/valaccodebasemodule.vala
codegen/valaccodememberaccessmodule.vala
codegen/valagdbusclientmodule.vala
codegen/valagdbusmodule.vala
codegen/valagirwriter.vala
codegen/valagtypemodule.vala

index 08de1251f9cdc51a19ca2715471b75297733e4ff..be9c504d9d1af6f914ecdf7b5a3d7f4fd8cb1eb3 100644 (file)
@@ -787,12 +787,11 @@ public class Vala.CCodeAttribute : AttributeCache {
                                return sym.name.replace ("_", "-");
                        } else if (sym is PropertyAccessor) {
                                unowned PropertyAccessor acc = (PropertyAccessor) sym;
-                               var t = (TypeSymbol) acc.prop.parent_symbol;
-
+                               unowned Property prop = (Property) acc.prop;
                                if (acc.readable) {
-                                       return "%sget_%s".printf (get_ccode_lower_case_prefix (t), acc.prop.name);
+                                       return "%sget_%s".printf (get_ccode_lower_case_prefix (prop.parent_symbol), get_ccode_name (prop).replace ("-", "_"));
                                } else {
-                                       return "%sset_%s".printf (get_ccode_lower_case_prefix (t), acc.prop.name);
+                                       return "%sset_%s".printf (get_ccode_lower_case_prefix (prop.parent_symbol), get_ccode_name (prop).replace ("-", "_"));
                                }
                        } else if (sym is Signal) {
                                return Symbol.camel_case_to_lower_case (sym.name).replace ("_", "-");;
@@ -982,6 +981,8 @@ public class Vala.CCodeAttribute : AttributeCache {
                                csuffix = csuffix.substring (0, csuffix.length - "_class".length) + "class";
                        }
                        return csuffix;
+               } else if (sym is Property) {
+                       return get_ccode_name (sym).replace ("-", "_");
                } else if (sym is Signal) {
                        return get_ccode_attribute (sym).name.replace ("-", "_");
                } else if (sym.name != null) {
@@ -1518,9 +1519,9 @@ public class Vala.CCodeAttribute : AttributeCache {
                        unowned Property prop = (Property) acc.prop;
                        if (prop.base_property != null || prop.base_interface_property != null) {
                                if (acc.readable) {
-                                       return "%sreal_get_%s".printf (get_ccode_lower_case_prefix (prop.parent_symbol), prop.name);
+                                       return "%sreal_get_%s".printf (get_ccode_lower_case_prefix (prop.parent_symbol), get_ccode_name (prop).replace ("-", "_"));
                                } else {
-                                       return "%sreal_set_%s".printf (get_ccode_lower_case_prefix (prop.parent_symbol), prop.name);
+                                       return "%sreal_set_%s".printf (get_ccode_lower_case_prefix (prop.parent_symbol), get_ccode_name (prop).replace ("-", "_"));
                                }
                        } else {
                                return name;
index 8cc088aaf5a87ebfc7c10c21f2ddb1b2c0f8ad9c..a805787206cee0de5a55668840e19053f8be4b3b 100644 (file)
@@ -1828,7 +1828,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                        }
 
                        if (acc.readable) {
-                               var vcall = new CCodeFunctionCall (new CCodeMemberAccess.pointer (vcast, "get_%s".printf (prop.name)));
+                               var vcall = new CCodeFunctionCall (new CCodeMemberAccess.pointer (vcast, "get_%s".printf (get_ccode_name (prop).replace ("-", "_"))));
                                vcall.add_argument (new CCodeIdentifier ("self"));
 
                                // check if vfunc pointer is properly set
@@ -1859,7 +1859,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                        ccode.add_return (default_value_for_type (acc.value_type, false, true));
                                }
                        } else {
-                               var vcall = new CCodeFunctionCall (new CCodeMemberAccess.pointer (vcast, "set_%s".printf (prop.name)));
+                               var vcall = new CCodeFunctionCall (new CCodeMemberAccess.pointer (vcast, "set_%s".printf (get_ccode_name (prop).replace ("-", "_"))));
                                vcall.add_argument (new CCodeIdentifier ("self"));
                                vcall.add_argument (new CCodeIdentifier ("value"));
 
@@ -6408,7 +6408,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                vcast = get_this_interface_cexpression (base_iface);
                        }
                        if (vcast != null) {
-                               var ccall = new CCodeFunctionCall (new CCodeMemberAccess.pointer (vcast, "set_%s".printf (prop.name)));
+                               var ccall = new CCodeFunctionCall (new CCodeMemberAccess.pointer (vcast, "set_%s".printf (get_ccode_name (prop).replace ("-", "_"))));
                                ccall.add_argument ((CCodeExpression) get_ccodenode (instance));
                                var cexpr = get_cvalue_ (value);
                                if (prop.property_type.is_real_non_null_struct_type ()) {
index 29d0251428b5b8def61b3aadd24d4b7a25c26ce4..05345c0c85b5012ec3be65086d494f1480db67d3 100644 (file)
@@ -225,7 +225,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
                                        vcast = get_this_interface_cexpression (base_iface);
                                }
                                if (vcast != null) {
-                                       var ccall = new CCodeFunctionCall (new CCodeMemberAccess.pointer (vcast, "get_%s".printf (prop.name)));
+                                       var ccall = new CCodeFunctionCall (new CCodeMemberAccess.pointer (vcast, "get_%s".printf (get_ccode_name (prop).replace ("-", "_"))));
                                        ccall.add_argument (get_cvalue (expr.inner));
                                        if (prop.property_type.is_real_non_null_struct_type ()) {
                                                var temp_value = (GLibValue) create_temp_value (prop.get_accessor.value_type, false, expr);
index 697b0875875f298bbc251b9af5c643a43c4a7d3e..ac27cdfd32034d5d2b01af601a961b315e63f795 100644 (file)
@@ -100,11 +100,11 @@ public class Vala.GDBusClientModule : GDBusModule {
                        }
 
                        if (prop.get_accessor != null) {
-                               var vfunc_entry = new CCodeMemberAccess.pointer (new CCodeIdentifier ("iface"), "get_" + prop.name);
+                               var vfunc_entry = new CCodeMemberAccess.pointer (new CCodeIdentifier ("iface"), "get_" + get_ccode_name (prop).replace ("-", "_"));
                                ccode.add_assignment (vfunc_entry, new CCodeIdentifier (generate_dbus_proxy_property_get (main_iface, iface, prop)));
                        }
                        if (prop.set_accessor != null) {
-                               var vfunc_entry = new CCodeMemberAccess.pointer (new CCodeIdentifier ("iface"), "set_" + prop.name);
+                               var vfunc_entry = new CCodeMemberAccess.pointer (new CCodeIdentifier ("iface"), "set_" + get_ccode_name (prop).replace ("-", "_"));
                                ccode.add_assignment (vfunc_entry, new CCodeIdentifier (generate_dbus_proxy_property_set (main_iface, iface, prop)));
                        }
                }
@@ -973,7 +973,7 @@ public class Vala.GDBusClientModule : GDBusModule {
        }
 
        string generate_dbus_proxy_property_get (Interface main_iface, Interface iface, Property prop) {
-               string proxy_name = "%sdbus_proxy_get_%s".printf (get_ccode_lower_case_prefix (main_iface), prop.name);
+               string proxy_name = "%sdbus_proxy_get_%s".printf (get_ccode_lower_case_prefix (main_iface), get_ccode_name (prop).replace ("-", "_"));
 
                string dbus_iface_name = get_dbus_name (iface);
 
@@ -1113,7 +1113,7 @@ public class Vala.GDBusClientModule : GDBusModule {
        }
 
        string generate_dbus_proxy_property_set (Interface main_iface, Interface iface, Property prop) {
-               string proxy_name = "%sdbus_proxy_set_%s".printf (get_ccode_lower_case_prefix (main_iface), prop.name);
+               string proxy_name = "%sdbus_proxy_set_%s".printf (get_ccode_lower_case_prefix (main_iface), get_ccode_name (prop).replace ("-", "_"));
 
                string dbus_iface_name = get_dbus_name (iface);
 
index 59ab1de8b76af8591176c8a4fb1ae68c6e783483..3662403e66aa21f24ed224120de39e95c8b91a86 100644 (file)
@@ -441,11 +441,11 @@ public class Vala.GDBusModule : GVariantModule {
                        info.append (new CCodeConstant ("NULL"));
 
                        var cdecl = new CCodeDeclaration ("const GDBusPropertyInfo");
-                       cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_property_info_" + prop.name, info));
+                       cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_property_info_" + get_ccode_name (prop).replace ("-", "_"), info));
                        cdecl.modifiers = CCodeModifiers.STATIC;
                        cfile.add_constant_declaration (cdecl);
 
-                       infos.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_property_info_" + prop.name)));
+                       infos.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_property_info_" + get_ccode_name (prop).replace ("-", "_"))));
                }
 
                infos.append (new CCodeConstant ("NULL"));
index 405f8a2e52f9a22041e80f2e8979dff7a2275038..fe6800ef063e90c479a170270ab6020c8b1ba09a 100644 (file)
@@ -1504,6 +1504,7 @@ public class Vala.GIRWriter : CodeVisitor {
                if (prop.get_accessor != null && prop.get_accessor.readable) {
                        var m = prop.get_accessor.get_method ();
                        if (m != null) {
+                               // TODO inherit CCode.name
                                visit_method (m);
                        }
                }
@@ -1511,6 +1512,7 @@ public class Vala.GIRWriter : CodeVisitor {
                if (prop.set_accessor != null && prop.set_accessor.writable) {
                        var m = prop.set_accessor.get_method ();
                        if (m != null) {
+                               // TODO inherit CCode.name
                                visit_method (m);
                        }
                }
index ec103d2f4f048092f6cc47ebe365674a7adc3297..3c30b323b99677b1424b4f79151e5668c773bc54 100644 (file)
@@ -420,7 +420,7 @@ public class Vala.GTypeModule : GErrorModule {
                var cselfparam = new CCodeParameter ("self", get_ccode_name (this_type));
 
                if (prop.get_accessor != null) {
-                       var vdeclarator = new CCodeFunctionDeclarator ("get_%s".printf (prop.name));
+                       var vdeclarator = new CCodeFunctionDeclarator ("get_%s".printf (get_ccode_name (prop).replace ("-", "_")));
                        vdeclarator.add_parameter (cselfparam);
                        var creturn_type = get_callable_creturn_type (prop.get_accessor.get_method ());
                        if (prop.property_type.is_real_non_null_struct_type ()) {
@@ -454,7 +454,7 @@ public class Vala.GTypeModule : GErrorModule {
                                cvalueparam = new CCodeParameter ("value", get_ccode_name (prop.set_accessor.value_type));
                        }
 
-                       var vdeclarator = new CCodeFunctionDeclarator ("set_%s".printf (prop.name));
+                       var vdeclarator = new CCodeFunctionDeclarator ("set_%s".printf (get_ccode_name (prop).replace ("-", "_")));
                        vdeclarator.add_parameter (cselfparam);
                        vdeclarator.add_parameter (cvalueparam);
 
@@ -1370,14 +1370,14 @@ public class Vala.GTypeModule : GErrorModule {
 
                                        CCodeExpression cfunc = new CCodeIdentifier (get_ccode_real_name (prop.get_accessor));
                                        cfunc = cast_method_pointer (prop.base_property.get_accessor.get_method (), cfunc, base_type);
-                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "get_%s".printf (prop.name)), cfunc);
+                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "get_%s".printf (get_ccode_name (prop).replace ("-", "_"))), cfunc);
                                }
                                if (prop.set_accessor != null) {
                                        generate_property_accessor_declaration (prop.base_property.set_accessor, cfile);
 
                                        CCodeExpression cfunc = new CCodeIdentifier (get_ccode_real_name (prop.set_accessor));
                                        cfunc = cast_method_pointer (prop.base_property.set_accessor.get_method (), cfunc, base_type);
-                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "set_%s".printf (prop.name)), cfunc);
+                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "set_%s".printf (get_ccode_name (prop).replace ("-", "_"))), cfunc);
                                }
                        }
                }
@@ -1540,7 +1540,7 @@ public class Vala.GTypeModule : GErrorModule {
                                        if (prop.is_abstract || prop.is_virtual) {
                                                cfunc = cast_method_pointer (prop.base_interface_property.get_accessor.get_method (), cfunc, base_type);
                                        }
-                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "get_%s".printf (prop.name)), cfunc);
+                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "get_%s".printf (get_ccode_name (prop).replace ("-", "_"))), cfunc);
                                }
                                if (prop.set_accessor != null) {
                                        generate_property_accessor_declaration (prop.base_interface_property.set_accessor, cfile);
@@ -1554,7 +1554,7 @@ public class Vala.GTypeModule : GErrorModule {
                                        if (prop.is_abstract || prop.is_virtual) {
                                                cfunc = cast_method_pointer (prop.base_interface_property.set_accessor.get_method (), cfunc, base_type);
                                        }
-                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "set_%s".printf (prop.name)), cfunc);
+                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "set_%s".printf (get_ccode_name (prop).replace ("-", "_"))), cfunc);
                                }
                        }
                }
@@ -1593,7 +1593,7 @@ public class Vala.GTypeModule : GErrorModule {
                                        string cname = get_ccode_name (base_property.get_accessor);
                                        CCodeExpression cfunc = new CCodeIdentifier (cname);
                                        cfunc = cast_method_pointer (base_property.get_accessor.get_method (), cfunc, iface);
-                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "get_%s".printf (prop.name)), cfunc);
+                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "get_%s".printf (get_ccode_name (prop).replace ("-", "_"))), cfunc);
                                }
                                if (base_property.set_accessor != null && prop.set_accessor != null) {
                                        generate_property_accessor_declaration (base_property.set_accessor, cfile);
@@ -1601,7 +1601,7 @@ public class Vala.GTypeModule : GErrorModule {
                                        string cname = get_ccode_name (base_property.set_accessor);
                                        CCodeExpression cfunc = new CCodeIdentifier (cname);
                                        cfunc = cast_method_pointer (base_property.set_accessor.get_method (), cfunc, iface);
-                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "set_%s".printf (prop.name)), cfunc);
+                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "set_%s".printf (get_ccode_name (prop).replace ("-", "_"))), cfunc);
                                }
                        }
                }
@@ -1711,14 +1711,14 @@ public class Vala.GTypeModule : GErrorModule {
 
                                                CCodeExpression cfunc = new CCodeIdentifier (get_ccode_real_name (prop.get_accessor));
                                                cfunc = cast_method_pointer (prop.base_property.get_accessor.get_method (), cfunc, base_type);
-                                               ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "get_%s".printf (prop.name)), cfunc);
+                                               ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "get_%s".printf (get_ccode_name (prop).replace ("-", "_"))), cfunc);
                                        }
                                        if (prop.set_accessor != null) {
                                                generate_property_accessor_declaration (prop.base_property.set_accessor, cfile);
 
                                                CCodeExpression cfunc = new CCodeIdentifier (get_ccode_real_name (prop.set_accessor));
                                                cfunc = cast_method_pointer (prop.base_property.set_accessor.get_method (), cfunc, base_type);
-                                               ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "set_%s".printf (prop.name)), cfunc);
+                                               ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "set_%s".printf (get_ccode_name (prop).replace ("-", "_"))), cfunc);
                                        }
                                }
                        }
@@ -2342,11 +2342,11 @@ public class Vala.GTypeModule : GErrorModule {
                        if (prop.is_virtual) {
                                if (prop.get_accessor != null) {
                                        string cname = get_ccode_real_name (prop.get_accessor);
-                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "get_%s".printf (prop.name)), new CCodeIdentifier (cname));
+                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "get_%s".printf (get_ccode_name (prop).replace ("-", "_"))), new CCodeIdentifier (cname));
                                }
                                if (prop.set_accessor != null) {
                                        string cname = get_ccode_real_name (prop.set_accessor);
-                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "set_%s".printf (prop.name)), new CCodeIdentifier (cname));
+                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "set_%s".printf (get_ccode_name (prop).replace ("-", "_"))), new CCodeIdentifier (cname));
                                }
                        }
                }