]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Use get_array_length_cvalue to get the product of all dimensions
authorLuca Bruno <lucabru@src.gnome.org>
Wed, 4 May 2011 07:56:21 +0000 (09:56 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Wed, 4 May 2011 07:56:21 +0000 (09:56 +0200)
codegen/valaccodebasemodule.vala

index ee3a2b8f86abf1b307e79550d36763edcf5e15cd..ecf6522489408800e63640c85ca8c7c285847001 100644 (file)
@@ -2910,15 +2910,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                        } else if (variable.has_array_length_cexpr) {
                                                csizeexpr = new CCodeConstant (variable.get_array_length_cexpr ());
                                        } else if (!variable.no_array_length) {
-                                               bool first = true;
-                                               for (int dim = 1; dim <= array_type.rank; dim++) {
-                                                       if (first) {
-                                                               csizeexpr = get_array_length_cvalue (target_lvalue, dim);
-                                                               first = false;
-                                                       } else {
-                                                               csizeexpr = new CCodeBinaryExpression (CCodeBinaryOperator.MUL, csizeexpr, get_array_length_cvalue (target_lvalue, dim));
-                                                       }
-                                               }
+                                               csizeexpr = get_array_length_cvalue (target_lvalue);
                                        }
 
                                        if (csizeexpr != null) {
@@ -3089,16 +3081,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                        } else if (type is ArrayType) {
                                var array_type = (ArrayType) type;
                                if (requires_destroy (array_type.element_type)) {
-                                       CCodeExpression csizeexpr = null;
-                                       bool first = true;
-                                       for (int dim = 1; dim <= array_type.rank; dim++) {
-                                               if (first) {
-                                                       csizeexpr = get_array_length_cvalue (value, dim);
-                                                       first = false;
-                                               } else {
-                                                       csizeexpr = new CCodeBinaryExpression (CCodeBinaryOperator.MUL, csizeexpr, get_array_length_cvalue (value, dim));
-                                               }
-                                       }
+                                       CCodeExpression csizeexpr = get_array_length_cvalue (value);
 
                                        var st = array_type.element_type.data_type as Struct;
                                        if (st != null && !array_type.element_type.nullable) {
@@ -4003,18 +3986,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
 
                        if (type is ArrayType) {
                                var array_type = (ArrayType) type;
-                               bool first = true;
-                               CCodeExpression csizeexpr = null;
-                               for (int dim = 1; dim <= array_type.rank; dim++) {
-                                       if (first) {
-                                               csizeexpr = get_array_length_cvalue (value, dim);
-                                               first = false;
-                                       } else {
-                                               csizeexpr = new CCodeBinaryExpression (CCodeBinaryOperator.MUL, csizeexpr, get_array_length_cvalue (value, dim));
-                                       }
-                               }
-
-                               ccall.add_argument (csizeexpr);
+                               ccall.add_argument (get_array_length_cvalue (value));
 
                                if (array_type.element_type is GenericType) {
                                        var elem_dupexpr = get_dup_func_expression (array_type.element_type, node.source_reference);