From: Rico Tzschichholz Date: Wed, 24 Feb 2021 08:39:02 +0000 (+0100) Subject: WIP Support CCode.cname on property X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b4dc9f866a53fe1892d6264ed3c86ba398121b6d;p=thirdparty%2Fvala.git WIP Support CCode.cname on property Fixes https://gitlab.gnome.org/GNOME/vala/issues/1142 --- diff --git a/codegen/valaccodeattribute.vala b/codegen/valaccodeattribute.vala index 08de1251f..be9c504d9 100644 --- a/codegen/valaccodeattribute.vala +++ b/codegen/valaccodeattribute.vala @@ -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; diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 8cc088aaf..a80578720 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -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 ()) { diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala index 29d025142..05345c0c8 100644 --- a/codegen/valaccodememberaccessmodule.vala +++ b/codegen/valaccodememberaccessmodule.vala @@ -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); diff --git a/codegen/valagdbusclientmodule.vala b/codegen/valagdbusclientmodule.vala index 697b08758..ac27cdfd3 100644 --- a/codegen/valagdbusclientmodule.vala +++ b/codegen/valagdbusclientmodule.vala @@ -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); diff --git a/codegen/valagdbusmodule.vala b/codegen/valagdbusmodule.vala index 59ab1de8b..3662403e6 100644 --- a/codegen/valagdbusmodule.vala +++ b/codegen/valagdbusmodule.vala @@ -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")); diff --git a/codegen/valagirwriter.vala b/codegen/valagirwriter.vala index 405f8a2e5..fe6800ef0 100644 --- a/codegen/valagirwriter.vala +++ b/codegen/valagirwriter.vala @@ -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); } } diff --git a/codegen/valagtypemodule.vala b/codegen/valagtypemodule.vala index ec103d2f4..3c30b323b 100644 --- a/codegen/valagtypemodule.vala +++ b/codegen/valagtypemodule.vala @@ -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)); } } }