summaryrefslogtreecommitdiff
path: root/codegen/valagsignalmodule.vala
diff options
context:
space:
mode:
authorGeorge Barrett <bob@bob131.so>2017-12-12 14:37:38 +1100
committerRico Tzschichholz <ricotz@ubuntu.com>2018-11-02 14:24:10 +0100
commit29a4a868b8800ad6b4505bcc1226a01a12919fbf (patch)
tree14e53f31752a7dc6f6f022f4828bc163d76377bf /codegen/valagsignalmodule.vala
parent36671ae5def89b46384e627a467247c834948254 (diff)
downloadvala-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.vala12
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);