summaryrefslogtreecommitdiff
path: root/codegen/valaccodemethodcallmodule.vala
diff options
context:
space:
mode:
Diffstat (limited to 'codegen/valaccodemethodcallmodule.vala')
-rw-r--r--codegen/valaccodemethodcallmodule.vala60
1 files changed, 35 insertions, 25 deletions
diff --git a/codegen/valaccodemethodcallmodule.vala b/codegen/valaccodemethodcallmodule.vala
index b3e21a111..a9438521a 100644
--- a/codegen/valaccodemethodcallmodule.vala
+++ b/codegen/valaccodemethodcallmodule.vala
@@ -139,27 +139,29 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
if (!current_class.is_compact) {
if (current_class != m.parent_symbol) {
// chain up to base class
- foreach (DataType base_type in current_class.get_base_types ()) {
+ current_class.get_base_types ().foreach ((base_type) => {
if (base_type.data_type is Class) {
- List<TypeParameter> type_parameters = null;
+ List<TypeParameter>? type_parameters = null;
if (get_ccode_real_name (m) == "g_object_new") {
// gobject-style chainup
type_parameters = ((Class) base_type.data_type).get_type_parameters ();
}
add_generic_type_arguments (in_arg_map, base_type.get_type_arguments (), expr, true, type_parameters);
- break;
+ return false;
}
- }
+ return true;
+ });
} else {
// chain up to other constructor in same class
int type_param_index = 0;
var cl = (Class) m.parent_symbol;
- foreach (TypeParameter type_param in cl.get_type_parameters ()) {
+ cl.get_type_parameters ().foreach ((type_param) => {
in_arg_map.set (get_param_pos (0.1 * type_param_index + 0.01), new CCodeIdentifier ("%s_type".printf (type_param.name.down ())));
in_arg_map.set (get_param_pos (0.1 * type_param_index + 0.02), new CCodeIdentifier ("%s_dup_func".printf (type_param.name.down ())));
in_arg_map.set (get_param_pos (0.1 * type_param_index + 0.03), new CCodeIdentifier ("%s_destroy_func".printf (type_param.name.down ())));
type_param_index++;
- }
+ return true;
+ });
}
} else if (current_class.base_class == gsource_type) {
// g_source_new
@@ -267,17 +269,19 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
if (m.get_type_parameters ().size > 0) {
// generic method
int type_param_index = 0;
- foreach (var type_arg in ma.get_type_arguments ()) {
+ ma.get_type_arguments ().foreach ((type_arg) => {
in_arg_map.set (get_param_pos (get_ccode_generic_type_pos (m) + 0.01 * type_param_index), new CCodeIdentifier (get_ccode_name (type_arg)));
type_param_index++;
- }
+ return true;
+ });
} else {
// method in generic type
int type_param_index = 0;
- foreach (var type_arg in ma.inner.value_type.get_type_arguments ()) {
+ ma.inner.value_type.get_type_arguments ().foreach ((type_arg) => {
in_arg_map.set (get_param_pos (get_ccode_generic_type_pos (m) + 0.01 * type_param_index), new CCodeIdentifier (get_ccode_name (type_arg)));
type_param_index++;
- }
+ return true;
+ });
}
}
@@ -289,7 +293,7 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
} else if (m is DynamicMethod) {
m.clear_parameters ();
int param_nr = 1;
- foreach (Expression arg in expr.get_argument_list ()) {
+ expr.get_argument_list ().foreach ((arg) => {
var unary = arg as UnaryExpression;
if (unary != null && unary.operator == UnaryOperator.OUT) {
// out argument
@@ -306,10 +310,12 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
m.add_parameter (new Parameter ("param%d".printf (param_nr), arg.value_type));
}
param_nr++;
- }
- foreach (Parameter param in m.get_parameters ()) {
+ return true;
+ });
+ m.get_parameters ().foreach ((param) => {
param.accept (this);
- }
+ return true;
+ });
generate_dynamic_method_wrapper ((DynamicMethod) m);
} else if (m is CreationMethod && m.parent_symbol is Class) {
ccode.add_assignment (get_this_cexpression (), new CCodeCastExpression (ccall, CCodeBaseModule.get_ccode_name (current_class) + "*"));
@@ -325,14 +331,15 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
if (!current_class.is_compact && current_class.get_type_parameters ().size > 0) {
/* type, dup func, and destroy func fields for generic types */
var suffices = new string[] {"type", "dup_func", "destroy_func"};
- foreach (TypeParameter type_param in current_class.get_type_parameters ()) {
+ current_class.get_type_parameters ().foreach ((type_param) => {
var priv_access = new CCodeMemberAccess.pointer (new CCodeIdentifier ("self"), "priv");
foreach (string suffix in suffices) {
var param_name = new CCodeIdentifier ("%s_%s".printf (type_param.name.down (), suffix));
ccode.add_assignment (new CCodeMemberAccess.pointer (priv_access, param_name.name), param_name);
}
- }
+ return true;
+ });
}
// object chainup can't be used as expression
ccall_expr = null;
@@ -341,9 +348,9 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
bool ellipsis = false;
int i = 1;
- int arg_pos;
+ int arg_pos = 0;
Iterator<Parameter> params_it = params.iterator ();
- foreach (Expression arg in expr.get_argument_list ()) {
+ expr.get_argument_list ().foreach ((arg) => {
CCodeExpression cexpr = get_cvalue (arg);
var carg_map = in_arg_map;
@@ -473,7 +480,8 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
}
i++;
- }
+ return true;
+ });
if (params_it.next ()) {
var param = params_it.get ();
@@ -817,20 +825,20 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
}
params_it = params.iterator ();
- foreach (Expression arg in expr.get_argument_list ()) {
+ expr.get_argument_list ().foreach ((arg) => {
Parameter param = null;
if (params_it.next ()) {
param = params_it.get ();
if (param.params_array || param.ellipsis) {
// ignore ellipsis arguments as we currently don't use temporary variables for them
- break;
+ return false;
}
}
var unary = arg as UnaryExpression;
if (unary == null || unary.operator != UnaryOperator.OUT) {
- continue;
+ return true;
}
if (requires_destroy (unary.inner.value_type)) {
@@ -849,7 +857,8 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
ccode.add_assignment (get_array_length_cvalue (unary.inner.target_value, 1), len_call);
}
- }
+ return true;
+ });
if (m is CreationMethod && m.parent_symbol is Class && current_class.base_class == gsource_type) {
var cinitcall = new CCodeFunctionCall (new CCodeIdentifier ("%s_instance_init".printf (get_ccode_lower_case_name (current_class, null))));
@@ -877,10 +886,11 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
push_function (function);
ccode.open_switch (new CCodeConstant ("value"));
- foreach (var enum_value in en.get_values ()) {
+ en.get_values ().foreach ((enum_value) => {
ccode.add_case (new CCodeIdentifier (get_ccode_name (enum_value)));
ccode.add_return (new CCodeConstant ("\""+get_ccode_name (enum_value)+"\""));
- }
+ return true;
+ });
ccode.close ();
ccode.add_return (new CCodeConstant ("NULL"));