From 4d9a15034236c0ff2655879afddbf9f482a2feed Mon Sep 17 00:00:00 2001 From: Stone Tickle Date: Mon, 17 Feb 2025 06:07:10 -0500 Subject: [PATCH] obj_array_index: use return not outvar --- include/lang/object.h | 2 +- src/backend/ninja/build_target.c | 4 ++-- src/backend/ninja/custom_target.c | 6 ++---- src/backend/ninja/rules.c | 4 ++-- src/backend/xcode.c | 3 +-- src/cmd_install.c | 14 +++++++------- src/cmd_test.c | 20 ++++++++++---------- src/coerce.c | 2 +- src/compilers.c | 10 +++++----- src/functions/array.c | 2 +- src/functions/custom_target.c | 3 +-- src/functions/dependency.c | 4 ++-- src/functions/environment.c | 15 +++++---------- src/functions/external_program.c | 2 +- src/functions/kernel.c | 6 +++--- src/functions/kernel/build_target.c | 4 ++-- src/functions/kernel/configure_file.c | 2 +- src/functions/kernel/custom_target.c | 13 ++++++------- src/functions/kernel/dependency.c | 8 ++++---- src/functions/kernel/install.c | 2 +- src/functions/kernel/options.c | 2 +- src/functions/kernel/subproject.c | 4 ++-- src/functions/modules/pkgconfig.c | 2 +- src/functions/modules/python.c | 4 ++-- src/functions/source_set.c | 6 +++--- src/functions/string.c | 2 +- src/install.c | 4 ++-- src/lang/analyze.c | 16 ++++------------ src/lang/fmt.c | 2 +- src/lang/object.c | 10 +++++----- src/lang/vm.c | 10 +++++----- src/meson_opts.c | 6 +++--- src/options.c | 4 ++-- 33 files changed, 90 insertions(+), 108 deletions(-) diff --git a/include/lang/object.h b/include/lang/object.h index d7cb69849..bd35c1f83 100644 --- a/include/lang/object.h +++ b/include/lang/object.h @@ -620,7 +620,7 @@ bool obj_array_foreach_flat(struct workspace *wk, obj arr, void *usr_ctx, obj_ar bool obj_array_in(struct workspace *wk, obj arr, obj val); bool obj_array_index_of(struct workspace *wk, obj arr, obj val, uint32_t *idx); obj *obj_array_index_pointer(struct workspace *wk, obj arr, int64_t i); -void obj_array_index(struct workspace *wk, obj arr, int64_t i, obj *res); +obj obj_array_index(struct workspace *wk, obj arr, int64_t i); void obj_array_extend(struct workspace *wk, obj arr, obj arr2); void obj_array_extend_nodup(struct workspace *wk, obj arr, obj arr2); void obj_array_dup(struct workspace *wk, obj arr, obj *res); diff --git a/src/backend/ninja/build_target.c b/src/backend/ninja/build_target.c index f32f0e84f..7a2948662 100644 --- a/src/backend/ninja/build_target.c +++ b/src/backend/ninja/build_target.c @@ -76,8 +76,8 @@ write_tgt_source(struct workspace *wk, struct write_tgt_source_ctx *ctx, enum co UNREACHABLE; } - obj_array_index(wk, rule_name_arr, 0, &rule_name); - obj_array_index(wk, rule_name_arr, 1, &specialized_rule); + rule_name = obj_array_index(wk, rule_name_arr, 0); + specialized_rule = obj_array_index(wk, rule_name_arr, 1); } TSTR(esc_dest_path); diff --git a/src/backend/ninja/custom_target.c b/src/backend/ninja/custom_target.c index 39806bd6c..6dfc05cb3 100644 --- a/src/backend/ninja/custom_target.c +++ b/src/backend/ninja/custom_target.c @@ -117,8 +117,7 @@ ninja_write_custom_tgt(struct workspace *wk, obj tgt_id, struct write_tgt_ctx *c if (tgt->flags & custom_target_capture) { obj_array_push(wk, cmdline, make_str(wk, "-c")); - obj elem; - obj_array_index(wk, tgt->output, 0, &elem); + obj elem = obj_array_index(wk, tgt->output, 0); ca_relativize_path_push(wk, elem, cmdline); } @@ -126,8 +125,7 @@ ninja_write_custom_tgt(struct workspace *wk, obj tgt_id, struct write_tgt_ctx *c if (tgt->flags & custom_target_feed) { obj_array_push(wk, cmdline, make_str(wk, "-f")); - obj elem; - obj_array_index(wk, tgt->input, 0, &elem); + obj elem = obj_array_index(wk, tgt->input, 0); ca_relativize_path_push(wk, elem, cmdline); } diff --git a/src/backend/ninja/rules.c b/src/backend/ninja/rules.c index 3d4bfc3a9..3b605c3f9 100644 --- a/src/backend/ninja/rules.c +++ b/src/backend/ninja/rules.c @@ -208,8 +208,8 @@ write_compiler_rule_iter(struct workspace *wk, void *_ctx, obj k, obj comp_id) } obj specialized_rule; - obj_array_index(wk, rule_name_arr, 0, &rule_name); - obj_array_index(wk, rule_name_arr, 1, &specialized_rule); + rule_name = obj_array_index(wk, rule_name_arr, 0); + specialized_rule = obj_array_index(wk, rule_name_arr, 1); if (!specialized_rule) { return ir_cont; diff --git a/src/backend/xcode.c b/src/backend/xcode.c index bdb86091b..69a950335 100644 --- a/src/backend/xcode.c +++ b/src/backend/xcode.c @@ -101,8 +101,7 @@ struct pbx_item { static enum obj_type xc_pbx_type(struct xc_ctx *ctx, obj pbx) { - obj o; - obj_array_index(ctx->wk, pbx, 0, &o); + obj o = obj_array_index(ctx->wk, pbx, 0); return (enum obj_type)o; } diff --git a/src/cmd_install.c b/src/cmd_install.c index bb9615c92..f5e5b3e1a 100644 --- a/src/cmd_install.c +++ b/src/cmd_install.c @@ -207,9 +207,9 @@ install_scripts_iter(struct workspace *wk, void *_ctx, obj install_script) struct install_ctx *ctx = _ctx; obj install_script_skip_if_destdir, install_script_dry_run, install_script_cmdline; - obj_array_index(wk, install_script, 0, &install_script_skip_if_destdir); - obj_array_index(wk, install_script, 1, &install_script_dry_run); - obj_array_index(wk, install_script, 2, &install_script_cmdline); + install_script_skip_if_destdir = obj_array_index(wk, install_script, 0); + install_script_dry_run = obj_array_index(wk, install_script, 1); + install_script_cmdline = obj_array_index(wk, install_script, 2); bool script_skip_if_destdir = get_obj_bool(wk, install_script_skip_if_destdir); bool script_can_dry_run = get_obj_bool(wk, install_script_dry_run); @@ -293,10 +293,10 @@ install_run(struct install_options *opts) }; obj install_targets, install_scripts, source_root; - obj_array_index(&wk, install, 0, &install_targets); - obj_array_index(&wk, install, 1, &install_scripts); - obj_array_index(&wk, install, 2, &source_root); - obj_array_index(&wk, install, 3, &ctx.prefix); + install_targets = obj_array_index(&wk, install, 0); + install_scripts = obj_array_index(&wk, install, 1); + source_root = obj_array_index(&wk, install, 2); + ctx.prefix = obj_array_index(&wk, install, 3); TSTR(build_root); path_copy_cwd(&wk, &build_root); diff --git a/src/cmd_test.c b/src/cmd_test.c index 0455806a6..fcd63f656 100644 --- a/src/cmd_test.c +++ b/src/cmd_test.c @@ -105,7 +105,7 @@ test_suites_label(struct workspace *wk, const struct test_result *res) suites_len = get_obj_array(wk, res->test->suites)->len; if (suites_len == 1) { obj s; - obj_array_index(wk, res->test->suites, 0, &s); + s = obj_array_index(wk, res->test->suites, 0); suite_str = get_cstr(wk, s); } else if (suites_len > 1) { obj s; @@ -503,12 +503,12 @@ find_test_setup_iter(struct workspace *wk, void *_ctx, obj arr) /* [name, env, exclude_suites, exe_wrapper, is_default, timeout_multiplier] */ obj name, env, exclude_suites, exe_wrapper, is_default, timeout_multiplier; - obj_array_index(wk, arr, 0, &name); - obj_array_index(wk, arr, 1, &env); - obj_array_index(wk, arr, 2, &exclude_suites); - obj_array_index(wk, arr, 3, &exe_wrapper); - obj_array_index(wk, arr, 4, &is_default); - obj_array_index(wk, arr, 5, &timeout_multiplier); + name = obj_array_index(wk, arr, 0); + env = obj_array_index(wk, arr, 1); + exclude_suites = obj_array_index(wk, arr, 2); + exe_wrapper = obj_array_index(wk, arr, 3); + is_default = obj_array_index(wk, arr, 4); + timeout_multiplier = obj_array_index(wk, arr, 5); if (ctx->rtctx->opts->setup) { if (!project_namespaced_name_matches(ctx->rtctx->opts->setup, @@ -542,7 +542,7 @@ find_test_setup_project_iter(struct workspace *wk, void *_ctx, obj project_name, ctx->rtctx->proj_name = project_name; obj setups; - obj_array_index(wk, arr, 1, &setups); + setups = obj_array_index(wk, arr, 1); if (!setups) { return ir_cont; @@ -940,7 +940,7 @@ static enum iteration_result run_project_tests(struct workspace *wk, void *_ctx, obj proj_name, obj arr) { obj unfiltered_tests, tests; - obj_array_index(wk, arr, 0, &unfiltered_tests); + unfiltered_tests = obj_array_index(wk, arr, 0); struct run_test_ctx *ctx = _ctx; ctx->deps = make_obj(wk, obj_array); @@ -1174,7 +1174,7 @@ tests_run(struct test_options *opts, const char *argv0) if (!serial_load_from_private_dir(&wk, &option_info, output_path.option_info)) { goto ret; } - obj_array_index(&wk, option_info, 0, &wk.global_opts); + wk.global_opts = obj_array_index(&wk, option_info, 0); } { diff --git a/src/coerce.c b/src/coerce.c index 0b8723ecb..3e29f1d71 100644 --- a/src/coerce.c +++ b/src/coerce.c @@ -307,7 +307,7 @@ coerce_executable(struct workspace *wk, uint32_t node, obj val, obj *res, obj *a return ir_err; } - obj_array_index(wk, o->cmd_array, 0, &str); + str = obj_array_index(wk, o->cmd_array, 0); uint32_t cmd_array_len = get_obj_array(wk, o->cmd_array)->len; if (cmd_array_len > 1) { *args = obj_array_slice(wk, o->cmd_array, 1, cmd_array_len); diff --git a/src/compilers.c b/src/compilers.c index 2cd8730e8..09dab1d5c 100644 --- a/src/compilers.c +++ b/src/compilers.c @@ -83,9 +83,9 @@ compiler_check_cache_get(struct workspace *wk, obj key, struct compiler_check_ca obj arr; if (obj_dict_index(wk, wk->compiler_check_cache, key, &arr)) { obj cache_res; - obj_array_index(wk, arr, 0, &cache_res); + cache_res = obj_array_index(wk, arr, 0); val->success = get_obj_bool(wk, cache_res); - obj_array_index(wk, arr, 1, &val->value); + val->value = obj_array_index(wk, arr, 1); return true; } else { return false; @@ -322,9 +322,9 @@ run_cmd_arr(struct workspace *wk, struct run_cmd_ctx *cmd_ctx, obj cmd_arr, cons } obj status, err, out; - obj_array_index(wk, cache_val.value, 0, &status); - obj_array_index(wk, cache_val.value, 1, &out); - obj_array_index(wk, cache_val.value, 2, &err); + status = obj_array_index(wk, cache_val.value, 0); + out = obj_array_index(wk, cache_val.value, 1); + err = obj_array_index(wk, cache_val.value, 2); cmd_ctx->status = get_obj_number(wk, status); diff --git a/src/functions/array.c b/src/functions/array.c index f02eab1d3..6c21eb8b7 100644 --- a/src/functions/array.c +++ b/src/functions/array.c @@ -40,7 +40,7 @@ func_array_get(struct workspace *wk, obj self, obj *res) return false; } } else { - obj_array_index(wk, self, i, res); + *res = obj_array_index(wk, self, i); } return true; diff --git a/src/functions/custom_target.c b/src/functions/custom_target.c index 29747766f..9bf5b66ea 100644 --- a/src/functions/custom_target.c +++ b/src/functions/custom_target.c @@ -16,8 +16,7 @@ custom_target_is_linkable(struct workspace *wk, obj ct) struct obj_custom_target *tgt = get_obj_custom_target(wk, ct); if (get_obj_array(wk, tgt->output)->len == 1) { - obj out; - obj_array_index(wk, tgt->output, 0, &out); + obj out = obj_array_index(wk, tgt->output, 0); return file_is_linkable(wk, out); } diff --git a/src/functions/dependency.c b/src/functions/dependency.c index c1ccd5007..c3189ece5 100644 --- a/src/functions/dependency.c +++ b/src/functions/dependency.c @@ -80,8 +80,8 @@ dep_pkgconfig_define(struct workspace *wk, obj dep, uint32_t node, obj var) for (int64_t idx = 0; idx < arraylen; idx += 2) { obj key, val; - obj_array_index(wk, var, idx, &key); - obj_array_index(wk, var, idx + 1, &val); + key = obj_array_index(wk, var, idx); + val = obj_array_index(wk, var, idx + 1); const char *ckey = get_cstr(wk, key); const char *cval = get_cstr(wk, val); diff --git a/src/functions/environment.c b/src/functions/environment.c index d76c9e8f9..422f3e624 100644 --- a/src/functions/environment.c +++ b/src/functions/environment.c @@ -22,10 +22,10 @@ evironment_to_dict_iter(struct workspace *wk, void *_ctx, obj action) { obj env = *(obj *)_ctx, mode_num, key, val, sep; - obj_array_index(wk, action, 0, &mode_num); - obj_array_index(wk, action, 1, &key); - obj_array_index(wk, action, 2, &val); - obj_array_index(wk, action, 3, &sep); + mode_num = obj_array_index(wk, action, 0); + key = obj_array_index(wk, action, 1); + val = obj_array_index(wk, action, 2); + sep = obj_array_index(wk, action, 3); enum environment_set_mode mode = get_obj_number(wk, mode_num); @@ -188,17 +188,12 @@ func_environment_unset(struct workspace *wk, obj self, obj *res) return false; } - obj to_delete, action, key, actions = get_obj_environment(wk, self)->actions; + obj to_delete, action, actions = get_obj_environment(wk, self)->actions; to_delete = make_obj(wk, obj_array); uint32_t i = 0; obj_array_for(wk, actions, action) { - /* obj_array_index(wk, action, 0, &mode_num); */ - obj_array_index(wk, action, 1, &key); - /* obj_array_index(wk, action, 2, &val); */ - /* obj_array_index(wk, action, 3, &sep); */ - if (obj_equal(wk, action, an[0].val)) { obj_array_push(wk, to_delete, i + 1); } diff --git a/src/functions/external_program.c b/src/functions/external_program.c index c8814d2a5..adfc8fb7a 100644 --- a/src/functions/external_program.c +++ b/src/functions/external_program.c @@ -61,7 +61,7 @@ func_external_program_path(struct workspace *wk, obj self, obj *res) return false; } - obj_array_index(wk, get_obj_external_program(wk, self)->cmd_array, 0, res); + *res = obj_array_index(wk, get_obj_external_program(wk, self)->cmd_array, 0); return true; } diff --git a/src/functions/kernel.c b/src/functions/kernel.c index b79ad1bdd..8c1eb3896 100644 --- a/src/functions/kernel.c +++ b/src/functions/kernel.c @@ -593,8 +593,8 @@ find_program_check_override(struct workspace *wk, struct find_program_iter_ctx * obj over = 0, op; switch (get_obj_type(wk, override)) { case obj_array: - obj_array_index(wk, override, 0, &op); - obj_array_index(wk, override, 1, &over); + op = obj_array_index(wk, override, 0); + over = obj_array_index(wk, override, 1); break; case obj_python_installation: case obj_external_program: @@ -1151,7 +1151,7 @@ func_run_command(struct workspace *wk, obj _, obj *res) return false; } - obj_array_index(wk, an[0].val, 0, &arg0); + arg0 = obj_array_index(wk, an[0].val, 0); if (get_obj_type(wk, arg0) == obj_compiler) { obj cmd_arr = get_obj_compiler(wk, arg0)->cmd_arr[toolchain_component_compiler]; diff --git a/src/functions/kernel/build_target.c b/src/functions/kernel/build_target.c index 8ef73353c..a81fd7967 100644 --- a/src/functions/kernel/build_target.c +++ b/src/functions/kernel/build_target.c @@ -1094,8 +1094,8 @@ tgt_common(struct workspace *wk, obj *res, enum tgt_type type, enum tgt_type arg obj val; val = make_obj(wk, obj_both_libs); struct obj_both_libs *both = get_obj_both_libs(wk, val); - obj_array_index(wk, *res, 0, &both->static_lib); - obj_array_index(wk, *res, 1, &both->dynamic_lib); + both->static_lib = obj_array_index(wk, *res, 0); + both->dynamic_lib = obj_array_index(wk, *res, 1); *res = val; assert(get_obj_build_target(wk, both->static_lib)->type == tgt_static_library); diff --git a/src/functions/kernel/configure_file.c b/src/functions/kernel/configure_file.c index 17ba3fe17..3f1b437b5 100644 --- a/src/functions/kernel/configure_file.c +++ b/src/functions/kernel/configure_file.c @@ -535,7 +535,7 @@ array_to_elem_or_err(struct workspace *wk, uint32_t node, uint32_t arr, uint32_t return false; } - obj_array_index(wk, arr, 0, res); + *res = obj_array_index(wk, arr, 0); return true; } diff --git a/src/functions/kernel/custom_target.c b/src/functions/kernel/custom_target.c index 199ca996d..b32018eaa 100644 --- a/src/functions/kernel/custom_target.c +++ b/src/functions/kernel/custom_target.c @@ -137,7 +137,7 @@ format_cmd_arg_cb(struct workspace *wk, uint32_t node, void *_ctx, const struct if (!boundscheck(wk, ctx->opts->err_node, get_obj_array(wk, arr)->len, &index)) { return format_cb_error; } - obj_array_index(wk, arr, 0, &e); + e = obj_array_index(wk, arr, 0); str_relative_to_build_root(wk, ctx, get_file_path(wk, e), elem); return format_cb_found; @@ -202,8 +202,7 @@ format_cmd_arg_cb(struct workspace *wk, uint32_t node, void *_ctx, const struct return format_cb_error; } - obj in0; - obj_array_index(wk, ctx->opts->input, 0, &in0); + obj in0 = obj_array_index(wk, ctx->opts->input, 0); const struct str *orig_str = get_str(wk, *get_obj_file(wk, in0)); TSTR(plainname); @@ -244,7 +243,7 @@ format_cmd_arg_cb(struct workspace *wk, uint32_t node, void *_ctx, const struct return format_cb_error; } - obj_array_index(wk, arr, index, &e); + e = obj_array_index(wk, arr, index); str_relative_to_build_root(wk, ctx, get_file_path(wk, e), elem); return format_cb_found; @@ -397,7 +396,7 @@ format_cmd_output_cb(struct workspace *wk, uint32_t node, void *_ctx, const stru } obj in0; - obj_array_index(wk, ctx->opts->input, 0, &in0); + in0 = obj_array_index(wk, ctx->opts->input, 0); const struct str *ss = get_str(wk, *get_obj_file(wk, in0)); TSTR(buf); @@ -619,7 +618,7 @@ install_custom_target(struct workspace *wk, if (get_obj_array(wk, install_dir)->len == 1) { obj i0; - obj_array_index(wk, install_dir, 0, &i0); + i0 = obj_array_index(wk, install_dir, 0); install_dir = i0; } @@ -684,7 +683,7 @@ func_custom_target(struct workspace *wk, obj _, obj *res) } obj v; - obj_array_index(wk, akw[kw_output].val, 0, &v); + v = obj_array_index(wk, akw[kw_output].val, 0); name = v; } diff --git a/src/functions/kernel/dependency.c b/src/functions/kernel/dependency.c index 49228242a..5d38e7ed8 100644 --- a/src/functions/kernel/dependency.c +++ b/src/functions/kernel/dependency.c @@ -199,9 +199,9 @@ handle_dependency_fallback(struct workspace *wk, struct dep_lookup_ctx *ctx, boo obj subproj_name, subproj_dep = 0, subproj; switch (get_obj_array(wk, ctx->fallback)->len) { - case 2: obj_array_index(wk, ctx->fallback, 1, &subproj_dep); + case 2: subproj_dep = obj_array_index(wk, ctx->fallback, 1); /* FALLTHROUGH */ - case 1: obj_array_index(wk, ctx->fallback, 0, &subproj_name); break; + case 1: subproj_name = obj_array_index(wk, ctx->fallback, 0); break; default: vm_error_at(wk, ctx->err_node, "expected array of length 1-2 for fallback"); return false; } @@ -540,7 +540,7 @@ is_dependency_fallback_forced(struct workspace *wk, struct dep_lookup_ctx *ctx) obj force_fallback_for, subproj_name; get_option_value(wk, current_project(wk), "force_fallback_for", &force_fallback_for); - obj_array_index(wk, get_dependency_fallback_name(wk, ctx), 0, &subproj_name); + subproj_name = obj_array_index(wk, get_dependency_fallback_name(wk, ctx), 0); enum wrap_mode wrap_mode = get_option_wrap_mode(wk); @@ -739,7 +739,7 @@ func_dependency(struct workspace *wk, obj self, obj *res) if (requirement == requirement_skip) { *res = make_obj(wk, obj_dependency); struct obj_dependency *dep = get_obj_dependency(wk, *res); - obj_array_index(wk, an[0].val, 0, &dep->name); + dep->name = obj_array_index(wk, an[0].val, 0); return true; } diff --git a/src/functions/kernel/install.c b/src/functions/kernel/install.c index 9073d9206..27677f92c 100644 --- a/src/functions/kernel/install.c +++ b/src/functions/kernel/install.c @@ -277,7 +277,7 @@ install_data_rename_iter(struct workspace *wk, void *_ctx, obj val) obj dest; obj rename; - obj_array_index(wk, ctx->rename, ctx->i, &rename); + rename = obj_array_index(wk, ctx->rename, ctx->i); TSTR(d); path_join(wk, &d, get_cstr(wk, ctx->dest), get_cstr(wk, rename)); diff --git a/src/functions/kernel/options.c b/src/functions/kernel/options.c index be04e2095..3cf9bce70 100644 --- a/src/functions/kernel/options.c +++ b/src/functions/kernel/options.c @@ -162,7 +162,7 @@ func_option(struct workspace *wk, obj self, obj *res) return false; } - obj_array_index(wk, akw[kw_choices].val, 0, &val); + val = obj_array_index(wk, akw[kw_choices].val, 0); break; case op_array: if (akw[kw_choices].set) { diff --git a/src/functions/kernel/subproject.c b/src/functions/kernel/subproject.c index 4717bc33a..2cf3304f1 100644 --- a/src/functions/kernel/subproject.c +++ b/src/functions/kernel/subproject.c @@ -181,8 +181,8 @@ subproject(struct workspace *wk, } obj sub_name, var_name, dep; - obj_array_index(wk, v, 0, &sub_name); - obj_array_index(wk, v, 1, &var_name); + sub_name = obj_array_index(wk, v, 0); + var_name = obj_array_index(wk, v, 1); if (!obj_equal(wk, sub_name, name)) { continue; diff --git a/src/functions/modules/pkgconfig.c b/src/functions/modules/pkgconfig.c index e493dff0c..80af884ca 100644 --- a/src/functions/modules/pkgconfig.c +++ b/src/functions/modules/pkgconfig.c @@ -395,7 +395,7 @@ module_pkgconf_process_libs_iter(struct workspace *wk, void *_ctx, obj val) struct obj_custom_target *tgt = get_obj_custom_target(wk, val); obj out; - obj_array_index(wk, tgt->output, 0, &out); + out = obj_array_index(wk, tgt->output, 0); if (str_endswith(get_str(wk, *get_obj_file(wk, out)), &STR(".a"))) { return ir_cont; diff --git a/src/functions/modules/python.c b/src/functions/modules/python.c index 04f45b373..3cbfe7495 100644 --- a/src/functions/modules/python.c +++ b/src/functions/modules/python.c @@ -413,7 +413,7 @@ py_install_data_rename_iter(struct workspace *wk, void *_ctx, obj val) obj dest; obj rename; - obj_array_index(wk, ctx->rename, ctx->i, &rename); + rename = obj_array_index(wk, ctx->rename, ctx->i); TSTR(d); path_join(wk, &d, get_cstr(wk, ctx->dest), get_cstr(wk, rename)); @@ -533,7 +533,7 @@ func_python_installation_interpreter_path(struct workspace *wk, obj self, obj *r return false; } - obj_array_index(wk, get_obj_external_program(wk, self)->cmd_array, 0, res); + *res = obj_array_index(wk, get_obj_external_program(wk, self)->cmd_array, 0); return true; } diff --git a/src/functions/source_set.c b/src/functions/source_set.c index 43c3e52e2..48acdc7ba 100644 --- a/src/functions/source_set.c +++ b/src/functions/source_set.c @@ -237,9 +237,9 @@ source_set_collect_rules_iter(struct workspace *wk, void *_ctx, obj v) struct source_set_collect_ctx *ctx = _ctx; obj when, if_true, if_false; - obj_array_index(wk, v, 0, &when); - obj_array_index(wk, v, 1, &if_true); - obj_array_index(wk, v, 2, &if_false); + when = obj_array_index(wk, v, 0); + if_true = obj_array_index(wk, v, 1); + if_false = obj_array_index(wk, v, 2); ctx->match = true; if (when && !obj_array_foreach_flat(wk, when, ctx, source_set_rule_match_iter)) { diff --git a/src/functions/string.c b/src/functions/string.c index 35b7bb1d7..875cdc7ae 100644 --- a/src/functions/string.c +++ b/src/functions/string.c @@ -162,7 +162,7 @@ func_format_cb(struct workspace *wk, uint32_t node, void *_ctx, const struct str return format_cb_error; } - obj_array_index(wk, ctx->arr, i, elem); + *elem = obj_array_index(wk, ctx->arr, i); return format_cb_found; } diff --git a/src/install.c b/src/install.c index 7bf5d7d68..fc93066a0 100644 --- a/src/install.c +++ b/src/install.c @@ -97,7 +97,7 @@ push_install_target(struct workspace *wk, obj src, obj dest, obj mode) } obj perm; - obj_array_index(wk, mode, 0, &perm); + perm = obj_array_index(wk, mode, 0); switch (get_obj_type(wk, perm)) { case obj_bool: tgt->has_perm = false; break; case obj_string: @@ -158,7 +158,7 @@ push_install_targets_iter(struct workspace *wk, void *_ctx, obj val_id) obj install_dir; if (ctx->install_dirs_is_arr) { - obj_array_index(wk, ctx->install_dirs, ctx->i, &install_dir); + install_dir = obj_array_index(wk, ctx->install_dirs, ctx->i); assert(install_dir); } else { install_dir = ctx->install_dirs; diff --git a/src/lang/analyze.c b/src/lang/analyze.c index 694c4b4fe..e0ce38fea 100644 --- a/src/lang/analyze.c +++ b/src/lang/analyze.c @@ -276,7 +276,7 @@ assign_lookup_with_scope(struct workspace *wk, const char *name, obj *scope, obj obj local_scope; obj_array_for(wk, wk->vm.scope_stack, local_scope) { obj base; - obj_array_index(wk, local_scope, 0, &base); + base = obj_array_index(wk, local_scope, 0); uint32_t local_scope_len = get_obj_array(wk, local_scope)->len; if (local_scope_len > 1) { @@ -286,7 +286,7 @@ assign_lookup_with_scope(struct workspace *wk, const char *name, obj *scope, obj // example: [{c: 4}] -- take last for (i = local_scope_len - 1; i >= 1; --i) { obj scope_group; - obj_array_index(wk, local_scope, i, &scope_group); + scope_group = obj_array_index(wk, local_scope, i); *scope = obj_array_get_tail(wk, scope_group); if (obj_dict_index_str(wk, *scope, name, res)) { @@ -505,15 +505,7 @@ pop_scope_group(struct workspace *wk) obj scope_group = obj_array_pop(wk, local_scope); - obj merged, base; - obj_array_index(wk, scope_group, 0, &merged); - - if (get_obj_array(wk, local_scope)->len == 1) { - obj_array_index(wk, local_scope, 0, &base); - } else { - obj prev_scope_group = obj_array_get_tail(wk, local_scope); - base = obj_array_get_tail(wk, prev_scope_group); - } + obj merged = obj_array_index(wk, scope_group, 0); { // First, merge all scopes other than the root scope into `merged` bool first = true; @@ -1391,7 +1383,7 @@ do_analyze_internal(struct workspace *wk, struct az_opts *opts) { /* re-initialize the default scope */ obj original_scope, scope_group, scope; - obj_array_index(wk, wk->vm.default_scope_stack, 0, &original_scope); + original_scope = obj_array_index(wk, wk->vm.default_scope_stack, 0); wk->vm.default_scope_stack = make_obj(wk, obj_array); scope_group = make_obj(wk, obj_array); scope = make_obj(wk, obj_dict); diff --git a/src/lang/fmt.c b/src/lang/fmt.c index 6f2736ee8..5d8d32621 100644 --- a/src/lang/fmt.c +++ b/src/lang/fmt.c @@ -442,7 +442,7 @@ fmt_write_frag_comment(struct fmt_ctx *f, struct fmt_frag *comment) f->fmt_on = true; obj raw_block; - obj_array_index(f->wk, f->raw_blocks, f->raw_block_idx, &raw_block); + raw_block = obj_array_index(f->wk, f->raw_blocks, f->raw_block_idx); arr_push(&f->out_blocks, &(struct fmt_out_block){ .str = raw_block, diff --git a/src/lang/object.c b/src/lang/object.c index 3bfd47abe..efb367068 100644 --- a/src/lang/object.c +++ b/src/lang/object.c @@ -471,7 +471,7 @@ obj_equal_array_iter(struct workspace *wk, void *_ctx, obj val) struct obj_equal_iter_ctx *ctx = _ctx; obj r; - obj_array_index(wk, ctx->other_container, ctx->i, &r); + r = obj_array_index(wk, ctx->other_container, ctx->i); if (!obj_equal(wk, val, r)) { return ir_err; @@ -741,12 +741,12 @@ obj_array_index_pointer(struct workspace *wk, obj arr, int64_t i) return obj_array_index_pointer_raw(wk, arr, i); } -void -obj_array_index(struct workspace *wk, obj arr, int64_t i, obj *res) +obj +obj_array_index(struct workspace *wk, obj arr, int64_t i) { obj *a = obj_array_index_pointer_raw(wk, arr, i); assert(a); - *res = *a; + return *a; } obj @@ -1032,7 +1032,7 @@ obj_array_flatten_one(struct workspace *wk, obj val, obj *res) struct obj_array *v = get_obj_array(wk, val); if (v->len == 1) { - obj_array_index(wk, val, 0, res); + *res = obj_array_index(wk, val, 0); } else { return false; } diff --git a/src/lang/vm.c b/src/lang/vm.c index ff80d4822..c9c72b42c 100644 --- a/src/lang/vm.c +++ b/src/lang/vm.c @@ -357,7 +357,7 @@ typecheck_and_mutate_function_arg(struct workspace *wk, uint32_t ip, obj *val, t if (!listify && (type == obj_file || (type & tc_file) == tc_file)) { if (t == obj_array && get_obj_array(wk, *val)->len == 1) { obj i0; - obj_array_index(wk, *val, 0, &i0); + i0 = obj_array_index(wk, *val, 0); if (get_obj_type(wk, i0) == obj_file) { *val = i0; } @@ -1729,7 +1729,7 @@ vm_op_index(struct workspace *wk) break; } - obj_array_index(wk, a, i, &res); + res = obj_array_index(wk, a, i); break; } case obj_dict: { @@ -1754,7 +1754,7 @@ vm_op_index(struct workspace *wk) break; } - obj_array_index(wk, tgt->output, i, &res); + res = obj_array_index(wk, tgt->output, i); break; } case obj_string: { @@ -2687,8 +2687,8 @@ vm_obj_to_struct_(struct workspace *wk, const char *name, obj o, void *s) } obj offset, t; - obj_array_index(wk, member_def, 0, &offset); - obj_array_index(wk, member_def, 1, &t); + offset = obj_array_index(wk, member_def, 0); + t = obj_array_index(wk, member_def, 1); char *dest = (char *)s + offset; switch ((enum vm_struct_type)t) { diff --git a/src/meson_opts.c b/src/meson_opts.c index 87dff68e9..734040f66 100644 --- a/src/meson_opts.c +++ b/src/meson_opts.c @@ -434,8 +434,8 @@ translate_meson_opts_setup(struct workspace *wk, char *argv[], uint32_t argc, st // additional requirement that the build dir be specified // relative to the source dir, or absolute. obj build, src; - obj_array_index(wk, ctx->stray_args, 0, &build); - obj_array_index(wk, ctx->stray_args, 1, &src); + build = obj_array_index(wk, ctx->stray_args, 0); + src = obj_array_index(wk, ctx->stray_args, 1); TSTR(build_dir); path_make_absolute(wk, &build_dir, get_cstr(wk, build)); @@ -507,7 +507,7 @@ translate_meson_opts_introspect(struct workspace *wk, char *argv[], uint32_t arg const char *build_dir = 0; if (get_obj_array(wk, ctx->stray_args)->len) { obj build; - obj_array_index(wk, ctx->stray_args, 0, &build); + build = obj_array_index(wk, ctx->stray_args, 0); build_dir = get_cstr(wk, build); } diff --git a/src/options.c b/src/options.c index f1b06ba01..00ffdb3b3 100644 --- a/src/options.c +++ b/src/options.c @@ -1370,8 +1370,8 @@ list_options(const struct list_options_opts *list_opts) ++i; } - obj_array_index(&wk, arr, 0, &wk.global_opts); - obj_array_index(&wk, arr, 1, ¤t_project(&wk)->opts); + wk.global_opts = obj_array_index(&wk, arr, 0); + current_project(&wk)->opts = obj_array_index(&wk, arr, 1); } struct list_options_ctx ctx = { .list_opts = list_opts };