diff options
author | George Barrett <bob@bob131.so> | 2017-12-12 14:37:38 +1100 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2018-11-02 14:24:10 +0100 |
commit | 29a4a868b8800ad6b4505bcc1226a01a12919fbf (patch) | |
tree | 14e53f31752a7dc6f6f022f4828bc163d76377bf /codegen/valagsignalmodule.vala | |
parent | 36671ae5def89b46384e627a467247c834948254 (diff) | |
download | vala-29a4a868b8800ad6b4505bcc1226a01a12919fbf.tar.gz |
codegen: Remove hardcoded "int" length type and use ArrayType.length_type
https://gitlab.gnome.org/GNOME/vala/issues/607
Diffstat (limited to 'codegen/valagsignalmodule.vala')
-rw-r--r-- | codegen/valagsignalmodule.vala | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/codegen/valagsignalmodule.vala b/codegen/valagsignalmodule.vala index 0c23ab21b..fc8a03bbe 100644 --- a/codegen/valagsignalmodule.vala +++ b/codegen/valagsignalmodule.vala @@ -193,8 +193,12 @@ public class Vala.GSignalModule : GObjectModule { callback_decl.add_parameter (new CCodeParameter ("arg_%d".printf (n_params), get_value_type_name_from_parameter (p))); n_params++; if (p.variable_type is ArrayType) { - for (var j = 0; j < ((ArrayType) p.variable_type).rank; j++) { - callback_decl.add_parameter (new CCodeParameter ("arg_%d".printf (n_params), "gint")); + var array_type = (ArrayType) p.variable_type; + //FIXME Only int length-type + //var length_ctype = get_ccode_array_length_type (array_type); + var length_ctype = get_ccode_name (int_type); + for (var j = 0; j < array_type.rank; j++) { + callback_decl.add_parameter (new CCodeParameter ("arg_%d".printf (n_params), length_ctype)); n_params++; } } @@ -265,7 +269,9 @@ public class Vala.GSignalModule : GObjectModule { fc.add_argument (inner_fc); i++; if (p.variable_type is ArrayType) { - for (var j = 0; j < ((ArrayType) p.variable_type).rank; j++) { + var array_type = (ArrayType) p.variable_type; + for (var j = 0; j < array_type.rank; j++) { + //FIXME Only int length-type inner_fc = new CCodeFunctionCall (new CCodeIdentifier ("g_value_get_int")); inner_fc.add_argument (new CCodeBinaryExpression (CCodeBinaryOperator.PLUS, new CCodeIdentifier ("param_values"), new CCodeIdentifier (i.to_string ()))); fc.add_argument (inner_fc); |