diff --git a/repos/gems/src/app/depot_deploy/child.h b/repos/gems/src/app/depot_deploy/child.h index 9db89605a6..f73fbf6bf0 100644 --- a/repos/gems/src/app/depot_deploy/child.h +++ b/repos/gems/src/app/depot_deploy/child.h @@ -256,8 +256,7 @@ class Depot_deploy::Child : public List_model::Element /* * \return true if condition changed */ - template - bool apply_condition(COND_FN const &fn) + bool apply_condition(auto const &cond_fn) { Condition const orig_condition = _condition; @@ -266,14 +265,13 @@ class Depot_deploy::Child : public List_model::Element : Xml_node(""); if (_start_xml.constructed()) - _condition = fn(_start_xml->xml(), launcher_xml) + _condition = cond_fn(_start_xml->xml(), launcher_xml) ? SATISFIED : UNSATISFIED; return _condition != orig_condition; } - template - void apply_if_unsatisfied(FN const &fn) const + void apply_if_unsatisfied(auto const &fn) const { Xml_node launcher_xml = _launcher_xml.constructed() ? _launcher_xml->xml() @@ -355,8 +353,7 @@ class Depot_deploy::Child : public List_model::Element inline void gen_monitor_policy_node(Xml_generator&) const; - template - void with_missing_pkg_path(FN const &fn) const + void with_missing_pkg_path(auto const &fn) const { if (_state == State::PKG_INCOMPLETE) fn(_config_pkg_path()); diff --git a/repos/gems/src/app/depot_deploy/children.h b/repos/gems/src/app/depot_deploy/children.h index bddafe7faf..af77561818 100644 --- a/repos/gems/src/app/depot_deploy/children.h +++ b/repos/gems/src/app/depot_deploy/children.h @@ -103,12 +103,11 @@ class Depot_deploy::Children /* * \return true if the condition of any child changed */ - template - bool apply_condition(COND_FN const &fn) + bool apply_condition(auto const &cond_fn) { bool any_condition_changed = false; _children.for_each([&] (Child &child) { - any_condition_changed |= child.apply_condition(fn); }); + any_condition_changed |= child.apply_condition(cond_fn); }); return any_condition_changed; } @@ -116,8 +115,7 @@ class Depot_deploy::Children * Call 'fn' with start 'Xml_node' of each child that has an * unsatisfied start condition. */ - template - void for_each_unsatisfied_child(FN const &fn) const + void for_each_unsatisfied_child(auto const &fn) const { _children.for_each([&] (Child const &child) { child.apply_if_unsatisfied(fn); }); @@ -158,8 +156,7 @@ class Depot_deploy::Children child.gen_installation_entry(xml); }); } - template - void for_each_missing_pkg_path(FN const &fn) const + void for_each_missing_pkg_path(auto const &fn) const { _children.for_each([&] (Child const &child) { child.with_missing_pkg_path(fn); }); diff --git a/repos/gems/src/app/phone_manager/main.cc b/repos/gems/src/app/phone_manager/main.cc index 232948087a..b9a5f5565f 100644 --- a/repos/gems/src/app/phone_manager/main.cc +++ b/repos/gems/src/app/phone_manager/main.cc @@ -778,16 +778,12 @@ struct Sculpt::Main : Input_event_handler, { Hosted _mmc_devices; - template - Storage_widget(ARGS &&... args) : _mmc_devices(Id { "devices" }, args...) { } + Storage_widget(auto &&... args) : _mmc_devices(Id { "devices" }, args...) { } void view(Scope &s) const { s.widget(_mmc_devices); } - template - void click(ARGS &&... args) { _mmc_devices.propagate(args...); } - - template - void clack(ARGS &&... args) { _mmc_devices.propagate(args...); } + void click(auto &&... args) { _mmc_devices.propagate(args...); } + void clack(auto &&... args) { _mmc_devices.propagate(args...); } void reset_operation() { _mmc_devices.reset_operation(); } }; @@ -1319,8 +1315,8 @@ struct Sculpt::Main : Input_event_handler, void _handle_window_layout(); - template - void _with_window(Xml_node window_list, String const &match, FN const &fn) + template + void _with_window(Xml_node window_list, String const &match, auto const &fn) { window_list.for_each_sub_node("window", [&] (Xml_node win) { if (win.attribute_value("label", String()) == match) diff --git a/repos/gems/src/app/phone_manager/view/component_add_widget.h b/repos/gems/src/app/phone_manager/view/component_add_widget.h index 5b81fc4831..aa1eedae0e 100644 --- a/repos/gems/src/app/phone_manager/view/component_add_widget.h +++ b/repos/gems/src/app/phone_manager/view/component_add_widget.h @@ -42,8 +42,7 @@ struct Sculpt::Component_add_widget : Widget Id _selected_route { }; - template - void _apply_to_selected_route(Action &action, FN const &fn) + void _apply_to_selected_route(Action &action, auto const &fn) { unsigned count = 0; action.apply_to_construction([&] (Component &component) { diff --git a/repos/gems/src/app/sculpt_manager/deploy.h b/repos/gems/src/app/sculpt_manager/deploy.h index 1fd4676c1d..8537d3c651 100644 --- a/repos/gems/src/app/sculpt_manager/deploy.h +++ b/repos/gems/src/app/sculpt_manager/deploy.h @@ -212,8 +212,7 @@ struct Sculpt::Deploy /** * Call 'fn' for each unsatisfied dependency of the child's 'start' node */ - template - void _for_each_missing_server(Xml_node start, FN const &fn) const + void _for_each_missing_server(Xml_node start, auto const &fn) const { start.for_each_sub_node("route", [&] (Xml_node route) { route.for_each_sub_node("service", [&] (Xml_node service) { diff --git a/repos/gems/src/app/sculpt_manager/graph.cc b/repos/gems/src/app/sculpt_manager/graph.cc index 5893e2c519..f4c3c72411 100644 --- a/repos/gems/src/app/sculpt_manager/graph.cc +++ b/repos/gems/src/app/sculpt_manager/graph.cc @@ -22,16 +22,14 @@ namespace Dialog { struct Parent_node; } struct Dialog::Parent_node : Sub_scope { - template - static void view_sub_scope(SCOPE &s, TEXT const &text) + static void view_sub_scope(auto &s, auto const &text) { s.node("frame", [&] { s.sub_node("label", [&] { s.attribute("text", Sculpt::Start_name(" ", text, " ")); }); }); } - template - static void with_narrowed_at(AT const &, FN const &) { } + static void with_narrowed_at(auto const &, auto const &) { } }; @@ -47,9 +45,8 @@ struct Dialog::Selectable_node Start_name pretty_name; }; - template static void view(Scope &s, Id const &id, - Attr const &attr, FN const &selected_fn) + Attr const &attr, auto const &selected_fn) { s.sub_scope(id, [&] (Scope &s) { diff --git a/repos/gems/src/app/sculpt_manager/main.cc b/repos/gems/src/app/sculpt_manager/main.cc index 0a6d15f546..2c5707d377 100644 --- a/repos/gems/src/app/sculpt_manager/main.cc +++ b/repos/gems/src/app/sculpt_manager/main.cc @@ -193,8 +193,7 @@ struct Sculpt::Main : Input_event_handler, template struct Dialog_view : TOP_LEVEL_DIALOG, private Distant_runtime::View { - template - Dialog_view(Distant_runtime &runtime, ARGS &&... args) + Dialog_view(Distant_runtime &runtime, auto &&... args) : TOP_LEVEL_DIALOG(args...), Distant_runtime::View(runtime, *this) { } using Distant_runtime::View::refresh; @@ -1380,8 +1379,8 @@ struct Sculpt::Main : Input_event_handler, void _handle_window_layout(); - template - void _with_window(Xml_node window_list, String const &match, FN const &fn) + template + void _with_window(Xml_node window_list, String const &match, auto const &fn) { window_list.for_each_sub_node("window", [&] (Xml_node win) { if (win.attribute_value("label", String()) == match) diff --git a/repos/gems/src/app/sculpt_manager/managed_config.h b/repos/gems/src/app/sculpt_manager/managed_config.h index 4380b1defe..5b6e569946 100644 --- a/repos/gems/src/app/sculpt_manager/managed_config.h +++ b/repos/gems/src/app/sculpt_manager/managed_config.h @@ -69,8 +69,7 @@ struct Sculpt::Managed_config (_obj.*_handle)(_manual_config_rom.xml()); } - template - void with_manual_config(FN const &fn) const + void with_manual_config(auto const &fn) const { fn(_manual_config_rom.xml()); } @@ -91,8 +90,7 @@ struct Sculpt::Managed_config return true; } - template - void generate(FN const &fn) + void generate(auto const &fn) { _config.generate([&] (Xml_generator &xml) { fn(xml); }); } diff --git a/repos/gems/src/app/sculpt_manager/model/download_queue.h b/repos/gems/src/app/sculpt_manager/model/download_queue.h index 5eef65dbf7..975528eac8 100644 --- a/repos/gems/src/app/sculpt_manager/model/download_queue.h +++ b/repos/gems/src/app/sculpt_manager/model/download_queue.h @@ -95,8 +95,7 @@ struct Sculpt::Download_queue : Noncopyable new (_alloc) Registered(_downloads, path, verify); } - template - void with_download(Path const &path, FN const &fn) const + void with_download(Path const &path, auto const &fn) const { _downloads.for_each([&] (Download const &download) { if (download.path == path) @@ -170,8 +169,7 @@ struct Sculpt::Download_queue : Noncopyable bool any_completed_download() const { return _state_present(Download::State::DONE); } bool any_failed_download() const { return _state_present(Download::State::FAILED); } - template - void for_each_failed_download(FN const &fn) const + void for_each_failed_download(auto const &fn) const { _downloads.for_each([&] (Download const &download) { if (download.state == Download::State::FAILED) diff --git a/repos/gems/src/app/sculpt_manager/model/file_browser_state.h b/repos/gems/src/app/sculpt_manager/model/file_browser_state.h index f42309201e..05cbf77101 100644 --- a/repos/gems/src/app/sculpt_manager/model/file_browser_state.h +++ b/repos/gems/src/app/sculpt_manager/model/file_browser_state.h @@ -54,15 +54,13 @@ struct Sculpt::File_browser_state : Noncopyable query_result->update(); } - template - void with_query_result(FN const &fn) const + void with_query_result(auto const &fn) const { if (query_result.constructed()) fn(query_result->xml()); } - template - void with_entry_at_index(unsigned const index, FN const &fn) const + void with_entry_at_index(unsigned const index, auto const &fn) const { unsigned count = 0; with_query_result([&] (Xml_node node) { diff --git a/repos/gems/src/app/sculpt_manager/model/index_menu.h b/repos/gems/src/app/sculpt_manager/model/index_menu.h index 811c07b2a8..44f77566b3 100644 --- a/repos/gems/src/app/sculpt_manager/model/index_menu.h +++ b/repos/gems/src/app/sculpt_manager/model/index_menu.h @@ -44,8 +44,7 @@ struct Sculpt::Index_menu } } - template - void _for_each_item(Xml_node const &index, FN const &fn, unsigned level) const + void _for_each_item(Xml_node const &index, auto const &fn, unsigned level) const { if (level == _level) { index.for_each_sub_node(fn); @@ -57,8 +56,7 @@ struct Sculpt::Index_menu _for_each_item(index, fn, level + 1); }); } - template - void for_each_item(Xml_node const &index, User const &user, FN const &fn) const + void for_each_item(Xml_node const &index, User const &user, auto const &fn) const { /* * The index may contain duplicates, evaluate only the first match. diff --git a/repos/gems/src/app/sculpt_manager/model/index_update_queue.h b/repos/gems/src/app/sculpt_manager/model/index_update_queue.h index ec0d5d0395..2fa351d0f6 100644 --- a/repos/gems/src/app/sculpt_manager/model/index_update_queue.h +++ b/repos/gems/src/app/sculpt_manager/model/index_update_queue.h @@ -116,8 +116,7 @@ struct Sculpt::Index_update_queue : Noncopyable return result; } - template - void with_update(Path const &path, FN const &fn) const + void with_update(Path const &path, auto const &fn) const { _updates.for_each([&] (Update const &update) { if (update.path == path) diff --git a/repos/gems/src/app/sculpt_manager/model/launchers.h b/repos/gems/src/app/sculpt_manager/model/launchers.h index 26a8abbc72..0d4e98134d 100644 --- a/repos/gems/src/app/sculpt_manager/model/launchers.h +++ b/repos/gems/src/app/sculpt_manager/model/launchers.h @@ -84,8 +84,7 @@ class Sculpt::Launchers : public Noncopyable ); } - template - void for_each(FN const &fn) const + void for_each(auto const &fn) const { _sorted.for_each([&] (Dict::Element const &e) { fn(Info(e.name)); }); } diff --git a/repos/gems/src/app/sculpt_manager/model/presets.h b/repos/gems/src/app/sculpt_manager/model/presets.h index 8cf72398fa..71bb301202 100644 --- a/repos/gems/src/app/sculpt_manager/model/presets.h +++ b/repos/gems/src/app/sculpt_manager/model/presets.h @@ -109,8 +109,7 @@ class Sculpt::Presets : public Noncopyable _presets.for_each([&] (Preset const &) { _count++; }); } - template - void for_each(FN const &fn) const + void for_each(auto const &fn) const { _sorted.for_each([&] (Preset const &preset) { fn(preset.info); }); } diff --git a/repos/gems/src/app/sculpt_manager/model/runtime_config.h b/repos/gems/src/app/sculpt_manager/model/runtime_config.h index 326743e6ed..44c9acd409 100644 --- a/repos/gems/src/app/sculpt_manager/model/runtime_config.h +++ b/repos/gems/src/app/sculpt_manager/model/runtime_config.h @@ -230,8 +230,7 @@ class Sculpt::Runtime_config /* dependencies on other child components */ List_model deps { }; - template - void for_each_secondary_dep(FN const &fn) const + void for_each_secondary_dep(auto const &fn) const { deps.for_each([&] (Dep const &dep) { if (dep.to_name != primary_dependency) @@ -245,8 +244,7 @@ class Sculpt::Runtime_config name(name), graph_id(graph_ids, name, id) { } - template - void for_each_service(FN const &fn) const + void for_each_service(auto const &fn) const { _child_services.for_each(fn); } @@ -352,8 +350,7 @@ class Sculpt::Runtime_config _pd { _r, Type::PD, "system PD service" }, _monitor { _r, Type::TERMINAL, "debug monitor" }; - template - void for_each(FN const &fn) const { _r.for_each(fn); } + void for_each(auto const &fn) const { _r.for_each(fn); } } _parent_services { }; @@ -406,14 +403,12 @@ class Sculpt::Runtime_config [&] { }); } - template - void for_each_component(FN const &fn) const { _components.for_each(fn); } + void for_each_component(auto const &fn) const { _components.for_each(fn); } /** * Call 'fn' with the name of each dependency of component 'name' */ - template - void for_each_dependency(Start_name const &name, FN const &fn) const + void for_each_dependency(Start_name const &name, auto const &fn) const { _components.for_each([&] (Component const &component) { if (component.name == name) { @@ -421,8 +416,7 @@ class Sculpt::Runtime_config fn(dep.to_name); }); } }); } - template - void for_each_service(FN const &fn) const + void for_each_service(auto const &fn) const { _parent_services.for_each(fn); diff --git a/repos/gems/src/app/sculpt_manager/model/runtime_state.h b/repos/gems/src/app/sculpt_manager/model/runtime_state.h index 498276fd68..2bf126f1a6 100644 --- a/repos/gems/src/app/sculpt_manager/model/runtime_state.h +++ b/repos/gems/src/app/sculpt_manager/model/runtime_state.h @@ -468,15 +468,13 @@ class Sculpt::Runtime_state : public Runtime_info } } - template - void apply_to_construction(FN const &fn) + void apply_to_construction(auto const &fn) { if (_construction_in_progress()) fn(*_currently_constructed->construction); } - template - void with_construction(FN const &fn) const + void with_construction(auto const &fn) const { if (_construction_in_progress()) fn(*_currently_constructed->construction); diff --git a/repos/gems/src/app/sculpt_manager/model/settings.h b/repos/gems/src/app/sculpt_manager/model/settings.h index e77d17b8e5..aa1c80bf54 100644 --- a/repos/gems/src/app/sculpt_manager/model/settings.h +++ b/repos/gems/src/app/sculpt_manager/model/settings.h @@ -36,8 +36,7 @@ struct Sculpt::Settings Name name; Path chargen_file; - template - static void for_each(FN const &fn) + static void for_each(auto const &fn) { static Keyboard_layout layouts[] = { { .name = "French", .chargen_file = "keyboard/fr_fr" }, diff --git a/repos/gems/src/app/sculpt_manager/model/storage_device.h b/repos/gems/src/app/sculpt_manager/model/storage_device.h index df0aa01864..a33cbab53c 100644 --- a/repos/gems/src/app/sculpt_manager/model/storage_device.h +++ b/repos/gems/src/app/sculpt_manager/model/storage_device.h @@ -173,15 +173,13 @@ struct Sculpt::Storage_device inline void gen_part_block_start_content(Xml_generator &) const; - template - void for_each_partition(FN const &fn) const + void for_each_partition(auto const &fn) const { fn(*whole_device_partition); partitions.for_each([&] (Partition const &partition) { fn(partition); }); } - template - void for_each_partition(FN const &fn) + void for_each_partition(auto const &fn) { fn(*whole_device_partition); partitions.for_each([&] (Partition &partition) { fn(partition); }); diff --git a/repos/gems/src/app/sculpt_manager/runtime/e2fs.cc b/repos/gems/src/app/sculpt_manager/runtime/e2fs.cc index cf20d022f2..9d51466072 100644 --- a/repos/gems/src/app/sculpt_manager/runtime/e2fs.cc +++ b/repos/gems/src/app/sculpt_manager/runtime/e2fs.cc @@ -15,23 +15,20 @@ namespace Sculpt { - template void gen_e2fs_start_content(Xml_generator &, Storage_target const &, - Rom_name const &, GEN_ARGS_FN const &); + Rom_name const &, auto const &); - template - void gen_arg(Xml_generator &xml, ARG const &arg) + void gen_arg(Xml_generator &xml, auto const &arg) { xml.node("arg", [&] { xml.attribute("value", arg); }); } } -template void Sculpt::gen_e2fs_start_content(Xml_generator &xml, Storage_target const &target, Rom_name const &tool, - GEN_ARGS_FN const &gen_args_fn) + auto const &gen_args_fn) { gen_common_start_content(xml, String<64>(target.label(), ".", tool), Cap_quota{500}, Ram_quota{100*1024*1024}, diff --git a/repos/gems/src/app/sculpt_manager/runtime/gpt_write.cc b/repos/gems/src/app/sculpt_manager/runtime/gpt_write.cc index ca6f8e5c38..cc081c1e44 100644 --- a/repos/gems/src/app/sculpt_manager/runtime/gpt_write.cc +++ b/repos/gems/src/app/sculpt_manager/runtime/gpt_write.cc @@ -15,17 +15,15 @@ namespace Sculpt { - template void _gen_gpt_write_start_content(Xml_generator &, Storage_device const &, - Start_name const &, GEN_ACTIONS_FN const &); + Start_name const &, auto const &); } -template void Sculpt::_gen_gpt_write_start_content(Xml_generator &xml, Storage_device const &device, Start_name const &name, - GEN_ACTIONS_FN const &fn) + auto const &gen_actions_fn) { gen_common_start_content(xml, name, Cap_quota{100}, Ram_quota{2*1024*1024}, Priority::STORAGE); @@ -37,7 +35,7 @@ void Sculpt::_gen_gpt_write_start_content(Xml_generator &xml, xml.attribute("update_geometry", "yes"); xml.attribute("preserve_hybrid", "yes"); - xml.node("actions", [&] { fn(xml); }); + xml.node("actions", [&] { gen_actions_fn(xml); }); }); xml.node("route", [&] { diff --git a/repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc b/repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc index 5b15980b5a..70afb5df9f 100644 --- a/repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc +++ b/repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc @@ -16,8 +16,7 @@ using namespace Sculpt; -template -static void for_each_inspected_storage_target(Storage_devices const &devices, FN const &fn) +static void for_each_inspected_storage_target(Storage_devices const &devices, auto const &fn) { devices.for_each([&] (Storage_device const &device) { device.for_each_partition([&] (Partition const &partition) { diff --git a/repos/gems/src/app/sculpt_manager/storage.h b/repos/gems/src/app/sculpt_manager/storage.h index d9b32b51e8..77cec833f5 100644 --- a/repos/gems/src/app/sculpt_manager/storage.h +++ b/repos/gems/src/app/sculpt_manager/storage.h @@ -77,8 +77,7 @@ struct Sculpt::Storage : Storage_device_widget::Action, Ram_fs_widget::Action _storage_devices.gen_usb_storage_policies(xml); } - template - void _apply_partition(Storage_target const &target, FN const &fn) + void _apply_partition(Storage_target const &target, auto const &fn) { _storage_devices.for_each([&] (Storage_device &device) { diff --git a/repos/gems/src/app/sculpt_manager/view/dialog.h b/repos/gems/src/app/sculpt_manager/view/dialog.h index 74ec0d461d..95b0a8790a 100644 --- a/repos/gems/src/app/sculpt_manager/view/dialog.h +++ b/repos/gems/src/app/sculpt_manager/view/dialog.h @@ -412,8 +412,7 @@ struct Dialog::Operation_button : Widget