]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Add get_variable_array_length_cname() and use as possible
authorRico Tzschichholz <ricotz@ubuntu.com>
Sun, 24 Feb 2019 20:39:47 +0000 (21:39 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sun, 24 Feb 2019 21:26:32 +0000 (22:26 +0100)
This also replaces get_parameter_array_length_cname()

codegen/valaccodearraymodule.vala
codegen/valaccodebasemodule.vala
codegen/valaccodedelegatemodule.vala
codegen/valaccodememberaccessmodule.vala
codegen/valaccodestructmodule.vala
codegen/valagasyncmodule.vala
codegen/valagdbusclientmodule.vala
codegen/valagdbusservermodule.vala
codegen/valagtypemodule.vala

index 66cf9f4023cbc8e8d252e0efd8ca8263167bc6e6..07a9a53991e0f23d2be25017696a860a76ee1d3d 100644 (file)
@@ -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));
index 10be7e44f832e32de2dab30a92922c37efab755a..533d230fd686fd1a1ceddaa35a843b9aa1351e3f 100644 (file)
@@ -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 "";
        }
 
index c823646992a127cb605742490934b6c6ddf2c4da..ef2bd11790871ea62bf489b6d8a86b59b2ca5f21 100644 (file)
@@ -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);
                                }
index f49d93b1ad5fe1e78842140eb9c89e3190401248..5ef5f4eb93ec522b8c29aeccd5447b3319130220 100644 (file)
@@ -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 ()) {
index 0baa75233e5ad517d0ba6fcac44006741c40cd70..048cbb79029674fb170ffe42457c43bf7a68f4df 100644 (file)
@@ -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);
                                                }
 
index 459cdca46d8e8244b5aea75a257890efdb3e5051..65ba99ff5d14f4a8e5417c77947edf493b52890e 100644 (file)
@@ -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) {
index 8961af672a4205884c3fba82d3641eb35f458b9c..5303975eab178d23d41ec403a40eb597c3cff098 100644 (file)
@@ -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));
index 0d5a323a4e1ac1cafc6cc07d3384d0cb9f156041..01fbef6169ce7532ac808509891177fc395fcc6d 100644 (file)
@@ -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));
                                }
                        }
                }
index af53b837066432e724e0fe58b52a7ef2fc0aa6d7..77838f792ad36cd0a4a58554d1f4081321ad364a 100644 (file)
@@ -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);
                                                        }