diff --git a/repos/gems/src/app/sculpt_manager/drivers.cc b/repos/gems/src/app/sculpt_manager/drivers.cc index 352cf777c9..bf33f4e100 100644 --- a/repos/gems/src/app/sculpt_manager/drivers.cc +++ b/repos/gems/src/app/sculpt_manager/drivers.cc @@ -155,7 +155,7 @@ class Sculpt::Drivers::Instance : Noncopyable, _nic_driver .gen_start_node (xml); } - void with(With_storage_devices::Callback const &fn) const + void with(With_storage_devices::Ft const &fn) const { _usb_driver.with_devices([&] (Xml_node const &usb_devices) { _ahci_driver.with_ports([&] (Xml_node const &ahci_ports) { @@ -167,9 +167,9 @@ class Sculpt::Drivers::Instance : Noncopyable, .mmc = mmc_devices }); }); }); }); }); } - void with(With_board_info::Callback const &fn) const { fn(_board_info); } - void with_platform_info(With_xml::Callback const &fn) const { fn(_platform.xml()); } - void with_fb_connectors(With_xml::Callback const &fn) const { _fb_driver.with_connectors(fn); } + void with(With_board_info::Ft const &fn) const { fn(_board_info); } + void with_platform_info(With_xml::Ft const &fn) const { fn(_platform.xml()); } + void with_fb_connectors(With_xml::Ft const &fn) const { _fb_driver.with_connectors(fn); } bool suspend_supported() const { @@ -203,10 +203,10 @@ Sculpt::Drivers::Drivers(Env &env, Children &children, Info const &info, Action _instance(_construct_instance(env, children, info, action)) { } -void Drivers::_with(With_storage_devices::Callback const &fn) const { _instance.with(fn); } -void Drivers::_with(With_board_info::Callback const &fn) const { _instance.with(fn); } -void Drivers::_with_platform_info(With_xml::Callback const &fn) const { _instance.with_platform_info(fn); } -void Drivers::_with_fb_connectors(With_xml::Callback const &fn) const { _instance.with_fb_connectors(fn); } +void Drivers::_with(With_storage_devices::Ft const &fn) const { _instance.with(fn); } +void Drivers::_with(With_board_info::Ft const &fn) const { _instance.with(fn); } +void Drivers::_with_platform_info(With_xml::Ft const &fn) const { _instance.with_platform_info(fn); } +void Drivers::_with_fb_connectors(With_xml::Ft const &fn) const { _instance.with_fb_connectors(fn); } void Drivers::update_usb () { _instance.update_usb(); } void Drivers::update_soc (Board_info::Soc soc) { _instance.update_soc(soc); } diff --git a/repos/gems/src/app/sculpt_manager/drivers.h b/repos/gems/src/app/sculpt_manager/drivers.h index 17b2853a42..6e99c96b91 100644 --- a/repos/gems/src/app/sculpt_manager/drivers.h +++ b/repos/gems/src/app/sculpt_manager/drivers.h @@ -16,6 +16,7 @@ /* local includes */ #include +#include #include #include #include @@ -52,14 +53,14 @@ class Sculpt::Drivers : Noncopyable static Instance &_construct_instance(auto &&...); - using With_storage_devices = With; - using With_board_info = With; - using With_xml = With; + using With_storage_devices = Callable; + using With_board_info = Callable; + using With_xml = Callable; - void _with(With_storage_devices::Callback const &) const; - void _with(With_board_info::Callback const &) const; - void _with_platform_info(With_xml::Callback const &) const; - void _with_fb_connectors(With_xml::Callback const &) const; + void _with(With_storage_devices::Ft const &) const; + void _with(With_board_info::Ft const &) const; + void _with_platform_info(With_xml::Ft const &) const; + void _with_fb_connectors(With_xml::Ft const &) const; public: @@ -71,8 +72,8 @@ class Sculpt::Drivers : Noncopyable void gen_start_nodes(Xml_generator &) const; - void with_storage_devices(auto const &fn) const { _with(With_storage_devices::Fn { fn }); } - void with_board_info (auto const &fn) const { _with(With_board_info::Fn { fn }); } + void with_storage_devices(auto const &fn) const { _with(With_storage_devices::Fn { fn }); } + void with_board_info (auto const &fn) const { _with(With_board_info::Fn { fn }); } void with_platform_info (auto const &fn) const { _with_platform_info(With_xml::Fn { fn }); } void with_fb_connectors (auto const &fn) const { _with_fb_connectors(With_xml::Fn { fn }); } diff --git a/repos/gems/src/app/sculpt_manager/types.h b/repos/gems/src/app/sculpt_manager/types.h index 44defc155b..4d238abe19 100644 --- a/repos/gems/src/app/sculpt_manager/types.h +++ b/repos/gems/src/app/sculpt_manager/types.h @@ -69,26 +69,6 @@ namespace Sculpt { */ struct Verify { bool value; }; - /** - * Utility for passing lambda arguments to non-template functions - */ - template - struct With - { - struct Callback : Interface - { - virtual void operator () (ARGS &&...) const = 0; - }; - - template - struct Fn : Callback - { - FN const &_fn; - Fn(FN const &fn) : _fn(fn) { }; - void operator () (ARGS &&... args) const override { _fn(args...); } - }; - }; - struct Progress { bool progress; }; }