From a62d95ffe7b72e8383b16c9eea9de13b156800be Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Sat, 19 Oct 2019 00:12:26 +0200 Subject: [PATCH] codegen: Replace hardcoded "gpointer" references (POSIX) Only applied up to CCodeDelegateModule --- codegen/valaccodearraymodule.vala | 12 ++++++------ codegen/valaccodebasemodule.vala | 31 ++++++++++++++++--------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/codegen/valaccodearraymodule.vala b/codegen/valaccodearraymodule.vala index 4a610e0aa..e609a1031 100644 --- a/codegen/valaccodearraymodule.vala +++ b/codegen/valaccodearraymodule.vala @@ -261,7 +261,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule { var cforiter = new CCodeAssignment (new CCodeIdentifier ("i"), new CCodeBinaryExpression (CCodeBinaryOperator.PLUS, new CCodeIdentifier ("i"), new CCodeConstant ("1"))); ccode.open_for (cforinit, cforcond, cforiter); - var cptrarray = new CCodeCastExpression (new CCodeIdentifier ("array"), "gpointer*"); + var cptrarray = new CCodeCastExpression (new CCodeIdentifier ("array"), "%s*".printf (get_ccode_name (pointer_type))); var cea = new CCodeElementAccess (cptrarray, new CCodeIdentifier ("i")); var cfreecond = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, cea, new CCodeConstant ("NULL")); @@ -279,7 +279,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule { var fun = new CCodeFunction ("_vala_array_destroy", "void"); fun.modifiers = CCodeModifiers.STATIC; - fun.add_parameter (new CCodeParameter ("array", "gpointer")); + fun.add_parameter (new CCodeParameter ("array", get_ccode_name (pointer_type))); fun.add_parameter (new CCodeParameter ("array_length", get_ccode_name (int_type))); fun.add_parameter (new CCodeParameter ("destroy_func", "GDestroyNotify")); @@ -303,7 +303,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule { fun = new CCodeFunction ("_vala_array_free", "void"); fun.modifiers = CCodeModifiers.STATIC; - fun.add_parameter (new CCodeParameter ("array", "gpointer")); + fun.add_parameter (new CCodeParameter ("array", get_ccode_name (pointer_type))); fun.add_parameter (new CCodeParameter ("array_length", get_ccode_name (int_type))); fun.add_parameter (new CCodeParameter ("destroy_func", "GDestroyNotify")); @@ -333,7 +333,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule { // FIXME will leak memory if that's not the case var fun = new CCodeFunction ("_vala_array_move", "void"); fun.modifiers = CCodeModifiers.STATIC; - fun.add_parameter (new CCodeParameter ("array", "gpointer")); + fun.add_parameter (new CCodeParameter ("array", get_ccode_name (pointer_type))); fun.add_parameter (new CCodeParameter ("element_size", "gsize")); fun.add_parameter (new CCodeParameter ("src", get_ccode_name (int_type))); fun.add_parameter (new CCodeParameter ("dest", get_ccode_name (int_type))); @@ -393,7 +393,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule { public override void append_vala_array_length () { var fun = new CCodeFunction ("_vala_array_length", get_ccode_name (int_type)); fun.modifiers = CCodeModifiers.STATIC; - fun.add_parameter (new CCodeParameter ("array", "gpointer")); + fun.add_parameter (new CCodeParameter ("array", get_ccode_name (pointer_type))); push_function (fun); @@ -404,7 +404,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule { var array_check = new CCodeIdentifier ("array"); ccode.open_if (array_check); - var array_element_check = new CCodeElementAccess (new CCodeCastExpression (new CCodeIdentifier ("array"), "gpointer*"), new CCodeConstant ("length")); + var array_element_check = new CCodeElementAccess (new CCodeCastExpression (new CCodeIdentifier ("array"), "%s*".printf (get_ccode_name (pointer_type))), new CCodeConstant ("length")); ccode.open_while (array_element_check); ccode.add_expression (new CCodeUnaryExpression (CCodeUnaryOperator.POSTFIX_INCREMENT, new CCodeIdentifier ("length"))); ccode.close (); diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 97bb84ce7..ddce144e1 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -305,6 +305,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { public DataType regex_type; public DataType float_type; public DataType double_type; + public DataType pointer_type; public TypeSymbol gtype_type; public TypeSymbol gobject_type; public ErrorType gerror_type; @@ -514,11 +515,15 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { dbus_proxy_type = (TypeSymbol) glib_ns.scope.lookup ("DBusProxy"); - delegate_target_type = new StructValueType ((Struct) glib_ns.scope.lookup ("pointer")); + pointer_type = new StructValueType ((Struct) glib_ns.scope.lookup ("pointer")); + + delegate_target_type = pointer_type; destroy_notify = (Delegate) glib_ns.scope.lookup ("DestroyNotify"); delegate_target_destroy_type = new DelegateType (destroy_notify); } else { - delegate_target_type = new PointerType (new VoidType ()); + pointer_type = new PointerType (new VoidType ()); + + delegate_target_type = pointer_type; destroy_notify = new Delegate ("ValaDestroyNotify", new VoidType ()); destroy_notify.add_parameter (new Parameter ("data", new PointerType (new VoidType ()))); destroy_notify.has_target = false; @@ -2122,7 +2127,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { if (m.coroutine) { // capture async data to allow invoking callback from inside closure - data.add_field ("gpointer", "_async_data_"); + data.add_field (get_ccode_name (pointer_type), "_async_data_"); // async method is suspended while waiting for callback, // so we never need to care about memory management of async data @@ -3143,7 +3148,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { var function = new CCodeFunction (destroy_func, "void"); function.modifiers = CCodeModifiers.STATIC; - function.add_parameter (new CCodeParameter ("data", "gpointer")); + function.add_parameter (new CCodeParameter ("data", get_ccode_name (pointer_type))); push_function (function); ccode.add_declaration (get_ccode_name (type), new CCodeVariableDeclarator ("self")); @@ -3220,7 +3225,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { var function = new CCodeFunction (free0_func, "void"); function.modifiers = CCodeModifiers.STATIC; - function.add_parameter (new CCodeParameter ("var", "gpointer")); + function.add_parameter (new CCodeParameter ("var", get_ccode_name (pointer_type))); push_function (function); @@ -4474,12 +4479,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { if (dupid.name == "g_strdup") { dup0_func = dupid.name; } else if (add_wrapper (dup0_func)) { - string pointer_cname = "gpointer"; - if (context.profile == Profile.POSIX) { - pointer_cname = "void *"; - } - var dup0_fun = new CCodeFunction (dup0_func, pointer_cname); - dup0_fun.add_parameter (new CCodeParameter ("self", pointer_cname)); + var dup0_fun = new CCodeFunction (dup0_func, get_ccode_name (pointer_type)); + dup0_fun.add_parameter (new CCodeParameter ("self", get_ccode_name (pointer_type))); dup0_fun.modifiers = CCodeModifiers.STATIC; push_function (dup0_fun); @@ -4518,7 +4519,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { if (type is GenericType) { // cast from gconstpointer to gpointer as GBoxedCopyFunc expects gpointer - ccall.add_argument (new CCodeCastExpression (cexpr, "gpointer")); + ccall.add_argument (new CCodeCastExpression (cexpr, get_ccode_name (pointer_type))); } else { ccall.add_argument (cexpr); } @@ -4545,7 +4546,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { // cast from gconstpointer to gpointer as methods in // generic classes may not return gconstpointer - cifnull = new CCodeCastExpression (cexpr, "gpointer"); + cifnull = new CCodeCastExpression (cexpr, get_ccode_name (pointer_type)); } if (is_ref_function_void (type)) { @@ -5797,9 +5798,9 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { unowned SemanticAnalyzer analyzer = context.analyzer; var result = cexpr; if (analyzer.is_signed_integer_type_argument (actual_type)) { - result = new CCodeCastExpression (new CCodeCastExpression (cexpr, "gintptr"), "gpointer"); + result = new CCodeCastExpression (new CCodeCastExpression (cexpr, "gintptr"), get_ccode_name (pointer_type)); } else if (analyzer.is_unsigned_integer_type_argument (actual_type)) { - result = new CCodeCastExpression (new CCodeCastExpression (cexpr, "guintptr"), "gpointer"); + result = new CCodeCastExpression (new CCodeCastExpression (cexpr, "guintptr"), get_ccode_name (pointer_type)); } return result; } -- 2.47.2