From: Rico Tzschichholz Date: Sun, 24 Feb 2019 20:39:47 +0000 (+0100) Subject: codegen: Add get_variable_array_length_cname() and use as possible X-Git-Tag: 0.43.92~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=48f26fa2e995a90efaca4abe28dfc21733f918d7;p=thirdparty%2Fvala.git codegen: Add get_variable_array_length_cname() and use as possible This also replaces get_parameter_array_length_cname() --- diff --git a/codegen/valaccodearraymodule.vala b/codegen/valaccodearraymodule.vala index 66cf9f402..07a9a5399 100644 --- a/codegen/valaccodearraymodule.vala +++ b/codegen/valaccodearraymodule.vala @@ -114,12 +114,12 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule { return "%s_length%d".printf (array_cname, dim); } - public override string get_parameter_array_length_cname (Parameter param, int dim) { - if (get_ccode_array_length_name (param) != null) { - return get_ccode_array_length_name (param); - } else { - return get_array_length_cname (get_ccode_name (param), dim); + public override string get_variable_array_length_cname (Variable variable, int dim) { + string? length_cname = get_ccode_array_length_name (variable); + if (length_cname == null) { + length_cname = get_array_length_cname (get_ccode_name (variable), dim); } + return (!) length_cname; } public override CCodeExpression get_array_length_cexpression (Expression array_expr, int dim = -1) { @@ -750,7 +750,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule { } for (int dim = 1; dim <= array_type.rank; dim++) { - var cparam = new CCodeParameter (get_parameter_array_length_cname (param, dim), length_ctype); + var cparam = new CCodeParameter (get_variable_array_length_cname (param, dim), length_ctype); cparam_map.set (get_param_pos (get_ccode_array_length_pos (param) + 0.01 * dim), cparam); if (carg_map != null) { carg_map.set (get_param_pos (get_ccode_array_length_pos (param) + 0.01 * dim), get_cexpression (cparam.name)); diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 10be7e44f..533d230fd 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -1977,7 +1977,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { if (array_type != null && get_ccode_array_length (param)) { var length_ctype = get_ccode_array_length_type (array_type); for (int dim = 1; dim <= array_type.rank; dim++) { - data.add_field (length_ctype, get_parameter_array_length_cname (param, dim)); + data.add_field (length_ctype, get_variable_array_length_cname (param, dim)); } } else if (deleg_type != null && deleg_type.delegate_symbol.has_target) { data.add_field (get_ccode_name (delegate_target_type), get_ccode_delegate_target_name (param)); @@ -3851,8 +3851,9 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { var array_type = param.variable_type as ArrayType; if (array_type != null && !array_type.fixed_length && get_ccode_array_length (param)) { for (int dim = 1; dim <= array_type.rank; dim++) { - ccode.open_if (get_cexpression (get_parameter_array_length_cname (param, dim))); - ccode.add_assignment (new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, get_cexpression (get_parameter_array_length_cname (param, dim))), get_array_length_cvalue (value, dim)); + string length_cname = get_variable_array_length_cname (param, dim); + ccode.open_if (get_cexpression (length_cname)); + ccode.add_assignment (new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, get_cexpression (length_cname)), get_array_length_cvalue (value, dim)); ccode.close (); } } @@ -6662,7 +6663,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { return ""; } - public virtual string get_parameter_array_length_cname (Parameter param, int dim) { + public virtual string get_variable_array_length_cname (Variable variable, int dim) { return ""; } diff --git a/codegen/valaccodedelegatemodule.vala b/codegen/valaccodedelegatemodule.vala index c82364699..ef2bd1179 100644 --- a/codegen/valaccodedelegatemodule.vala +++ b/codegen/valaccodedelegatemodule.vala @@ -335,7 +335,7 @@ public class Vala.CCodeDelegateModule : CCodeArrayModule { } else if (!get_ccode_array_length (d_params.get (i))) { clength = new CCodeConstant ("-1"); } else { - clength = new CCodeIdentifier (get_parameter_array_length_cname (d_params.get (i), dim)); + clength = new CCodeIdentifier (get_variable_array_length_cname (d_params.get (i), dim)); } carg_map.set (get_param_pos (get_ccode_array_length_pos (param) + 0.01 * dim), clength); } diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala index f49d93b1a..5ef5f4eb9 100644 --- a/codegen/valaccodememberaccessmodule.vala +++ b/codegen/valaccodememberaccessmodule.vala @@ -471,7 +471,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule { result.cvalue = new CCodeMemberAccess.pointer (get_variable_cexpression ("_data%d_".printf (get_block_id (block))), get_ccode_name (param)); if (array_type != null && get_ccode_array_length (param)) { for (int dim = 1; dim <= array_type.rank; dim++) { - result.append_array_length_cvalue (new CCodeMemberAccess.pointer (get_variable_cexpression ("_data%d_".printf (get_block_id (block))), get_parameter_array_length_cname (param, dim))); + result.append_array_length_cvalue (new CCodeMemberAccess.pointer (get_variable_cexpression ("_data%d_".printf (get_block_id (block))), get_variable_array_length_cname (param, dim))); } } else if (delegate_type != null && delegate_type.delegate_symbol.has_target) { result.delegate_target_cvalue = new CCodeMemberAccess.pointer (get_variable_cexpression ("_data%d_".printf (get_block_id (block))), get_ccode_delegate_target_name (param)); @@ -535,7 +535,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule { if (!param.captured && array_type != null) { if (get_ccode_array_length (param) && !get_ccode_array_null_terminated (param)) { for (int dim = 1; dim <= array_type.rank; dim++) { - CCodeExpression length_expr = get_cexpression (get_parameter_array_length_cname (param, dim)); + CCodeExpression length_expr = get_cexpression (get_variable_array_length_cname (param, dim)); if (param.direction == ParameterDirection.OUT) { length_expr = get_cexpression (get_array_length_cname (name, dim)); } else if (param.direction == ParameterDirection.REF) { @@ -605,13 +605,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule { if (array_type != null && get_ccode_array_length (field)) { for (int dim = 1; dim <= array_type.rank; dim++) { CCodeExpression length_expr = null; - - string length_cname; - if (get_ccode_array_length_name (field) != null) { - length_cname = get_ccode_array_length_name (field); - } else { - length_cname = get_array_length_cname (get_ccode_name (field), dim); - } + string length_cname = get_variable_array_length_cname (field, dim); if (((TypeSymbol) field.parent_symbol).is_reference_type ()) { length_expr = new CCodeMemberAccess.pointer (inst, length_cname); @@ -684,13 +678,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule { if (array_type != null && get_ccode_array_length (field)) { for (int dim = 1; dim <= array_type.rank; dim++) { - string length_cname; - if (get_ccode_array_length_name (field) != null) { - length_cname = get_ccode_array_length_name (field); - } else { - length_cname = get_array_length_cname (get_ccode_name (field), dim); - } - + string length_cname = get_variable_array_length_cname (field, dim); result.append_array_length_cvalue (new CCodeIdentifier (length_cname)); } if (array_type.rank == 1 && field.is_internal_symbol ()) { diff --git a/codegen/valaccodestructmodule.vala b/codegen/valaccodestructmodule.vala index 0baa75233..048cbb790 100644 --- a/codegen/valaccodestructmodule.vala +++ b/codegen/valaccodestructmodule.vala @@ -88,12 +88,7 @@ public abstract class Vala.CCodeStructModule : CCodeBaseModule { var length_ctype = get_ccode_array_length_type (array_type); for (int dim = 1; dim <= array_type.rank; dim++) { - string length_cname; - if (get_ccode_array_length_name (f) != null) { - length_cname = get_ccode_array_length_name (f); - } else { - length_cname = get_array_length_cname (get_ccode_name (f), dim); - } + string length_cname = get_variable_array_length_cname (f, dim); instance_struct.add_field (length_ctype, length_cname); } diff --git a/codegen/valagasyncmodule.vala b/codegen/valagasyncmodule.vala index 459cdca46..65ba99ff5 100644 --- a/codegen/valagasyncmodule.vala +++ b/codegen/valagasyncmodule.vala @@ -60,7 +60,7 @@ public class Vala.GAsyncModule : GtkModule { if (get_ccode_array_length (param)) { var length_ctype = get_ccode_array_length_type (array_type); for (int dim = 1; dim <= array_type.rank; dim++) { - data.add_field (length_ctype, get_parameter_array_length_cname (param, dim)); + data.add_field (length_ctype, get_variable_array_length_cname (param, dim)); } } } else if (param.variable_type is DelegateType) { diff --git a/codegen/valagdbusclientmodule.vala b/codegen/valagdbusclientmodule.vala index 8961af672..5303975ea 100644 --- a/codegen/valagdbusclientmodule.vala +++ b/codegen/valagdbusclientmodule.vala @@ -475,7 +475,7 @@ public class Vala.GDBusClientModule : GDBusModule { var length_ctype = get_ccode_array_length_type (array_type); for (int dim = 1; dim <= array_type.rank; dim++) { - string length_cname = get_parameter_array_length_cname (param, dim); + string length_cname = get_variable_array_length_cname (param, dim); ccode.add_declaration (length_ctype, new CCodeVariableDeclarator (length_cname, new CCodeConstant ("0"))); ccall.add_argument (new CCodeIdentifier (length_cname)); diff --git a/codegen/valagdbusservermodule.vala b/codegen/valagdbusservermodule.vala index 0d5a323a4..01fbef616 100644 --- a/codegen/valagdbusservermodule.vala +++ b/codegen/valagdbusservermodule.vala @@ -152,7 +152,7 @@ public class Vala.GDBusServerModule : GDBusClientModule { if (array_type != null) { var length_ctype = get_ccode_array_length_type (array_type); for (int dim = 1; dim <= array_type.rank; dim++) { - string length_cname = get_parameter_array_length_cname (param, dim); + string length_cname = get_variable_array_length_cname (param, dim); if (ready_data_struct != null) { ready_data_struct.add_field (length_ctype, length_cname); @@ -234,7 +234,7 @@ public class Vala.GDBusServerModule : GDBusClientModule { var array_type = param.variable_type as ArrayType; if (array_type != null) { for (int dim = 1; dim <= array_type.rank; dim++) { - string length_cname = get_parameter_array_length_cname (param, dim); + string length_cname = get_variable_array_length_cname (param, dim); CCodeExpression length_expr; if (ready_data_expr != null && param.direction == ParameterDirection.IN) @@ -343,7 +343,7 @@ public class Vala.GDBusServerModule : GDBusClientModule { if (array_type != null) { var length_ctype = get_ccode_array_length_type (array_type); for (int dim = 1; dim <= array_type.rank; dim++) { - string length_cname = get_parameter_array_length_cname (param, dim); + string length_cname = get_variable_array_length_cname (param, dim); ccode.add_declaration (length_ctype, new CCodeVariableDeclarator.zero (length_cname, new CCodeConstant ("0"))); } @@ -454,7 +454,7 @@ public class Vala.GDBusServerModule : GDBusClientModule { var array_type = owned_type as ArrayType; if (array_type != null) { for (int dim = 1; dim <= array_type.rank; dim++) { - string length_cname = get_parameter_array_length_cname (param, dim); + string length_cname = get_variable_array_length_cname (param, dim); target.append_array_length_cvalue (new CCodeMemberAccess.pointer (ready_data_expr, length_cname)); } @@ -509,7 +509,7 @@ public class Vala.GDBusServerModule : GDBusClientModule { var array_type = (ArrayType) param.variable_type; var length_ctype = get_ccode_array_length_type (array_type); for (int dim = 1; dim <= array_type.rank; dim++) { - function.add_parameter (new CCodeParameter (get_parameter_array_length_cname (param, dim), length_ctype)); + function.add_parameter (new CCodeParameter (get_variable_array_length_cname (param, dim), length_ctype)); } } } diff --git a/codegen/valagtypemodule.vala b/codegen/valagtypemodule.vala index af53b8370..77838f792 100644 --- a/codegen/valagtypemodule.vala +++ b/codegen/valagtypemodule.vala @@ -419,12 +419,7 @@ public class Vala.GTypeModule : GErrorModule { var length_ctype = get_ccode_array_length_type (array_type); for (int dim = 1; dim <= array_type.rank; dim++) { - string length_cname; - if (get_ccode_array_length_name (f) != null) { - length_cname = get_ccode_array_length_name (f); - } else { - length_cname = get_array_length_cname (get_ccode_name (f), dim); - } + string length_cname = get_variable_array_length_cname (f, dim); instance_struct.add_field (length_ctype, length_cname); } @@ -521,12 +516,7 @@ public class Vala.GTypeModule : GErrorModule { var length_ctype = get_ccode_array_length_type (array_type); for (int dim = 1; dim <= array_type.rank; dim++) { - string length_cname; - if (get_ccode_array_length_name (f) != null) { - length_cname = get_ccode_array_length_name (f); - } else { - length_cname = get_array_length_cname (get_ccode_name (f), dim); - } + string length_cname = get_variable_array_length_cname (f, dim); instance_priv_struct.add_field (length_ctype, length_cname); }