xml_node: change with_sub_node signature

The `with_sub_node` method is renamed to `with_optional_sub_node` to
better reflect that the non-existence of a sub node with the desired type is
ignored.
At the same time, the new `with_sub_node` now takes a second functor that is
called when no sub node of the desired type exists.

genodelabs/genode#4600
This commit is contained in:
Johannes Schlatow
2022-09-08 10:17:26 +02:00
committed by Norman Feske
parent f0e9881c7e
commit 7d143087c9
47 changed files with 220 additions and 205 deletions

View File

@@ -37,7 +37,7 @@ class Cbe_init::Configuration
Configuration (Genode::Xml_node const &node)
{
node.with_sub_node("virtual-block-device",
node.with_optional_sub_node("virtual-block-device",
[&] (Genode::Xml_node const &vbd)
{
_vbd_nr_of_lvls =
@@ -47,7 +47,7 @@ class Cbe_init::Configuration
_vbd_nr_of_leafs =
vbd.attribute_value("nr_of_leafs", (Genode::uint64_t)0);
});
node.with_sub_node("free-tree",
node.with_optional_sub_node("free-tree",
[&] (Genode::Xml_node const &ft)
{
_ft_nr_of_lvls =

View File

@@ -37,7 +37,7 @@ class Verbose_node
Verbose_node(Genode::Xml_node const &config)
{
config.with_sub_node("verbose", [&] (Genode::Xml_node const &verbose)
config.with_optional_sub_node("verbose", [&] (Genode::Xml_node const &verbose)
{
_cmd_pool_cmd_pending = verbose.attribute_value("cmd_pool_cmd_pending" , false);
_cmd_pool_cmd_in_progress = verbose.attribute_value("cmd_pool_cmd_in_progress", false);

View File

@@ -428,11 +428,11 @@ void Depot_deploy::Child::gen_start_node(Xml_generator &xml,
Affinity::Location location { };
if (affinity_from_launcher)
launcher_xml.with_sub_node("affinity", [&] (Xml_node node) {
launcher_xml.with_optional_sub_node("affinity", [&] (Xml_node node) {
location = Affinity::Location::from_xml(affinity_space, node); });
if (affinity_from_start)
start_xml.with_sub_node("affinity", [&] (Xml_node node) {
start_xml.with_optional_sub_node("affinity", [&] (Xml_node node) {
location = Affinity::Location::from_xml(affinity_space, node); });
xml.node("affinity", [&] () {

View File

@@ -85,7 +85,7 @@ struct Depot_deploy::Main
static_config.with_raw_content([&] (char const *start, size_t length) {
xml.append(start, length); });
config.with_sub_node("report", [&] (Xml_node const &report) {
config.with_optional_sub_node("report", [&] (Xml_node const &report) {
auto copy_bool_attribute = [&] (char const* name) {
if (report.has_attribute(name)) {
@@ -120,7 +120,7 @@ struct Depot_deploy::Main
});
});
config.with_sub_node("heartbeat", [&] (Xml_node const &heartbeat) {
config.with_optional_sub_node("heartbeat", [&] (Xml_node const &heartbeat) {
size_t const rate_ms = heartbeat.attribute_value("rate_ms", 2000UL);
xml.node("heartbeat", [&] () {
xml.attribute("rate_ms", rate_ms);

View File

@@ -409,13 +409,13 @@ void Depot_download_manager::Main::_handle_query_result()
Archive::User user { };
if (missing_index_files)
index.with_sub_node("missing", [&] (Xml_node missing) {
index.with_optional_sub_node("missing", [&] (Xml_node missing) {
user = missing.attribute_value("user", Archive::User()); });
if (user.valid())
return user;
dependencies.with_sub_node("missing", [&] (Xml_node missing) {
dependencies.with_optional_sub_node("missing", [&] (Xml_node missing) {
user = Archive::user(missing.attribute_value("path", Archive::Path())); });
if (!user.valid())

View File

@@ -541,7 +541,7 @@ bool Main::cbe_control_file_yields_state_idle(Xml_node const &fs_query_listing,
{
bool result { false };
bool done { false };
fs_query_listing.with_sub_node("dir", [&] (Xml_node const &node_0) {
fs_query_listing.with_optional_sub_node("dir", [&] (Xml_node const &node_0) {
node_0.for_each_sub_node("file", [&] (Xml_node const &node_1) {
if (done) {
return;
@@ -631,8 +631,8 @@ Main::State_string Main::_state_to_string(State state)
Main::State Main::_state_from_fs_query_listing(Xml_node const &node)
{
State state { State::INVALID };
node.with_sub_node("dir", [&] (Xml_node const &node_0) {
node_0.with_sub_node("file", [&] (Xml_node const &node_1) {
node.with_optional_sub_node("dir", [&] (Xml_node const &node_0) {
node_0.with_optional_sub_node("file", [&] (Xml_node const &node_1) {
if (_has_name(node_1, "state")) {
state = _state_from_string(
node_1.decoded_content<State_string>());
@@ -817,7 +817,7 @@ void Main::_handle_snapshots_fs_query_listing(Xml_node const &node)
case State::CONTROLS_SECURITY_USER_PASSPHRASE:
{
bool update_dialog { false };
node.with_sub_node("dir", [&] (Xml_node const &node_0) {
node.with_optional_sub_node("dir", [&] (Xml_node const &node_0) {
_snapshots.for_each([&] (Snapshot const &snap)
{
@@ -931,8 +931,8 @@ void Main::_handle_client_fs_fs_query_listing(Xml_node const &node)
switch (_state) {
case State::STARTUP_DETERMINE_CLIENT_FS_SIZE:
node.with_sub_node("dir", [&] (Xml_node const &node_0) {
node_0.with_sub_node("file", [&] (Xml_node const &node_1) {
node.with_optional_sub_node("dir", [&] (Xml_node const &node_0) {
node_0.with_optional_sub_node("file", [&] (Xml_node const &node_1) {
if (_has_name(node_1, "data")) {
@@ -957,8 +957,8 @@ void Main::_handle_client_fs_fs_query_listing(Xml_node const &node)
switch (_resizing_state) {
case Resizing_state::DETERMINE_CLIENT_FS_SIZE:
node.with_sub_node("dir", [&] (Xml_node const &node_0) {
node_0.with_sub_node("file", [&] (Xml_node const &node_1) {
node.with_optional_sub_node("dir", [&] (Xml_node const &node_0) {
node_0.with_optional_sub_node("file", [&] (Xml_node const &node_1) {
if (_has_name(node_1, "data")) {
@@ -1010,8 +1010,8 @@ void Main::_handle_image_fs_query_listing(Xml_node const &node)
case State::CONTROLS_SECURITY_USER_PASSPHRASE:
{
size_t size { 0 };
node.with_sub_node("dir", [&] (Xml_node const &node_0) {
node_0.with_sub_node("file", [&] (Xml_node const &node_1) {
node.with_optional_sub_node("dir", [&] (Xml_node const &node_0) {
node_0.with_optional_sub_node("file", [&] (Xml_node const &node_1) {
if (_has_name(node_1, "cbe.img")) {
size = node_1.attribute_value("size", (size_t)0);
}
@@ -1063,7 +1063,7 @@ _child_nr_of_provided_sessions(Xml_node const &sandbox_state,
if (child.attribute_value("name", String<128> { }) == child_state.start_name()) {
child.with_sub_node("provided", [&] (Xml_node const &provided) {
child.with_optional_sub_node("provided", [&] (Xml_node const &provided) {
provided.for_each_sub_node("session", [&] (Xml_node const &session) {
if (session.attribute_value("service", String<64> { }) == service_name) {
@@ -3507,24 +3507,24 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
Setup_obtain_params_hover const prev_hover { _setup_obtain_params_hover };
Setup_obtain_params_hover next_hover { Setup_obtain_params_hover::NONE };
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_sub_node("float", [&] (Xml_node const &node_3) {
node_2.with_optional_sub_node("float", [&] (Xml_node const &node_3) {
if (_has_name(node_3, "ok")) {
next_hover = Setup_obtain_params_hover::START_BUTTON;
}
});
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_sub_node("frame", [&] (Xml_node const &node_4) {
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("frame", [&] (Xml_node const &node_4) {
if (_has_name(node_4, "Passphrase")) {
next_hover = Setup_obtain_params_hover::PASSPHRASE_INPUT;
}
});
node_3.with_sub_node("float", [&] (Xml_node const &node_4) {
node_4.with_sub_node("button", [&] (Xml_node const &node_5) {
node_3.with_optional_sub_node("float", [&] (Xml_node const &node_4) {
node_4.with_optional_sub_node("button", [&] (Xml_node const &node_5) {
if (_has_name(node_5, "Show Hide")) {
next_hover = Setup_obtain_params_hover::PASSPHRASE_SHOW_HIDE_BUTTON;
@@ -3532,7 +3532,7 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
});
});
});
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
if (_has_name(node_3, "Client FS Size")) {
next_hover = Setup_obtain_params_hover::CLIENT_FS_SIZE_INPUT;
@@ -3556,24 +3556,24 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
Setup_obtain_params_hover const prev_hover { _setup_obtain_params_hover };
Setup_obtain_params_hover next_hover { Setup_obtain_params_hover::NONE };
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_sub_node("float", [&] (Xml_node const &node_3) {
node_2.with_optional_sub_node("float", [&] (Xml_node const &node_3) {
if (_has_name(node_3, "ok")) {
next_hover = Setup_obtain_params_hover::START_BUTTON;
}
});
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_sub_node("frame", [&] (Xml_node const &node_4) {
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("frame", [&] (Xml_node const &node_4) {
if (_has_name(node_4, "Passphrase")) {
next_hover = Setup_obtain_params_hover::PASSPHRASE_INPUT;
}
});
node_3.with_sub_node("float", [&] (Xml_node const &node_4) {
node_4.with_sub_node("button", [&] (Xml_node const &node_5) {
node_3.with_optional_sub_node("float", [&] (Xml_node const &node_4) {
node_4.with_optional_sub_node("button", [&] (Xml_node const &node_5) {
if (_has_name(node_5, "Show Hide")) {
next_hover = Setup_obtain_params_hover::PASSPHRASE_SHOW_HIDE_BUTTON;
@@ -3596,11 +3596,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
Controls_root_hover const prev_hover { _controls_root_hover };
Controls_root_hover next_hover { Controls_root_hover::NONE };
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
if (_has_name(node_4, "Shut down")) {
@@ -3609,9 +3609,9 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
}
});
});
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_sub_node("vbox", [&] (Xml_node const &node_5) {
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_optional_sub_node("vbox", [&] (Xml_node const &node_5) {
if (_has_name(node_5, "Snapshots")) {
@@ -3646,11 +3646,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
Snapshot_pointer const prev_snapshots_hover { _snapshots_hover };
Snapshot_pointer next_snapshots_hover { };
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
if (_has_name(node_4, "Shut down")) {
@@ -3658,20 +3658,20 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
}
});
});
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_sub_node("vbox", [&] (Xml_node const &node_5) {
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_optional_sub_node("vbox", [&] (Xml_node const &node_5) {
if (_snapshots_select.valid()) {
node_5.with_sub_node("hbox", [&] (Xml_node const &node_6) {
node_5.with_optional_sub_node("hbox", [&] (Xml_node const &node_6) {
if (_has_name(node_6, "Leave")) {
next_hover = Controls_snapshots_hover::GENERATION_LEAVE_BUTTON;
}
});
node_5.with_sub_node("button", [&] (Xml_node const &node_6) {
node_5.with_optional_sub_node("button", [&] (Xml_node const &node_6) {
if (_has_name(node_6, "Discard")) {
@@ -3681,18 +3681,18 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
} else {
node_5.with_sub_node("hbox", [&] (Xml_node const &node_6) {
node_5.with_optional_sub_node("hbox", [&] (Xml_node const &node_6) {
if (_has_name(node_6, "Leave")) {
next_hover = Controls_snapshots_hover::LEAVE_BUTTON;
}
});
node_5.with_sub_node("vbox", [&] (Xml_node const &node_6) {
node_5.with_optional_sub_node("vbox", [&] (Xml_node const &node_6) {
if (_has_name(node_6, "Generations")) {
node_6.with_sub_node("float", [&] (Xml_node const &node_7) {
node_6.with_optional_sub_node("float", [&] (Xml_node const &node_7) {
Generation const generation {
node_7.attribute_value(
@@ -3710,7 +3710,7 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
});
}
});
node_5.with_sub_node("button", [&] (Xml_node const &node_6) {
node_5.with_optional_sub_node("button", [&] (Xml_node const &node_6) {
if (_has_name(node_6, "Create")) {
@@ -3741,11 +3741,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
Dimensions_hover const prev_hover { _dimensions_hover };
Dimensions_hover next_hover { Dimensions_hover::NONE };
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
if (_has_name(node_4, "Shut down")) {
@@ -3753,16 +3753,16 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
}
});
});
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_sub_node("hbox", [&] (Xml_node const &node_5) {
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_optional_sub_node("hbox", [&] (Xml_node const &node_5) {
if (_has_name(node_5, "Leave")) {
next_hover = Dimensions_hover::LEAVE_BUTTON;
}
});
node_4.with_sub_node("vbox", [&] (Xml_node const &node_5) {
node_4.with_optional_sub_node("vbox", [&] (Xml_node const &node_5) {
if (_has_name(node_5, "Expand Client FS")) {
@@ -3793,11 +3793,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
Expand_client_fs_hover const prev_hover { _expand_client_fs_hover };
Expand_client_fs_hover next_hover { Expand_client_fs_hover::NONE };
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
if (_has_name(node_4, "Shut down")) {
@@ -3806,24 +3806,24 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
}
});
});
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_sub_node("vbox", [&] (Xml_node const &node_5) {
node_5.with_sub_node("hbox", [&] (Xml_node const &node_6) {
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_optional_sub_node("vbox", [&] (Xml_node const &node_5) {
node_5.with_optional_sub_node("hbox", [&] (Xml_node const &node_6) {
if (_has_name(node_6, "Leave")) {
next_hover = Expand_client_fs_hover::LEAVE_BUTTON;
}
});
node_5.with_sub_node("float", [&] (Xml_node const &node_6) {
node_5.with_optional_sub_node("float", [&] (Xml_node const &node_6) {
if (_has_name(node_6, "Start")) {
next_hover = Expand_client_fs_hover::START_BUTTON;
}
});
node_5.with_sub_node("frame", [&] (Xml_node const &node_6) {
node_5.with_optional_sub_node("frame", [&] (Xml_node const &node_6) {
if (_has_name(node_6, "Contingent")) {
@@ -3848,12 +3848,12 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
Expand_snapshot_buf_hover const prev_hover { _expand_snapshot_buf_hover };
Expand_snapshot_buf_hover next_hover { Expand_snapshot_buf_hover::NONE };
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
if (_has_name(node_4, "Shut down")) {
@@ -3862,25 +3862,25 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
}
});
});
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_sub_node("vbox", [&] (Xml_node const &node_5) {
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_optional_sub_node("vbox", [&] (Xml_node const &node_5) {
node_5.with_sub_node("hbox", [&] (Xml_node const &node_6) {
node_5.with_optional_sub_node("hbox", [&] (Xml_node const &node_6) {
if (_has_name(node_6, "Leave")) {
next_hover = Expand_snapshot_buf_hover::LEAVE_BUTTON;
}
});
node_5.with_sub_node("float", [&] (Xml_node const &node_6) {
node_5.with_optional_sub_node("float", [&] (Xml_node const &node_6) {
if (_has_name(node_6, "Start")) {
next_hover = Expand_snapshot_buf_hover::START_BUTTON;
}
});
node_5.with_sub_node("frame", [&] (Xml_node const &node_6) {
node_5.with_optional_sub_node("frame", [&] (Xml_node const &node_6) {
if (_has_name(node_6, "Contingent")) {
@@ -3905,11 +3905,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
Controls_security_hover const prev_hover { _controls_security_hover };
Controls_security_hover next_hover { Controls_security_hover::NONE };
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
if (_has_name(node_4, "Shut down")) {
@@ -3918,16 +3918,16 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
}
});
});
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_sub_node("hbox", [&] (Xml_node const &node_5) {
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_optional_sub_node("hbox", [&] (Xml_node const &node_5) {
if (_has_name(node_5, "Leave")) {
next_hover = Controls_security_hover::SECURITY_EXPAND_BUTTON;
}
});
node_4.with_sub_node("vbox", [&] (Xml_node const &node_5) {
node_4.with_optional_sub_node("vbox", [&] (Xml_node const &node_5) {
if (_has_name(node_5, "Block Encryption Key")) {
@@ -3959,11 +3959,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
Controls_security_block_encryption_key_hover const prev_hover { _controls_security_block_encryption_key_hover };
Controls_security_block_encryption_key_hover next_hover { Controls_security_block_encryption_key_hover::NONE };
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
if (_has_name(node_4, "Shut down")) {
@@ -3972,16 +3972,16 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
}
});
});
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_sub_node("button", [&] (Xml_node const &node_5) {
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_optional_sub_node("button", [&] (Xml_node const &node_5) {
if (_has_name(node_5, "Rekey")) {
next_hover = Controls_security_block_encryption_key_hover::REPLACE_BUTTON;
}
});
node_4.with_sub_node("hbox", [&] (Xml_node const &node_5) {
node_4.with_optional_sub_node("hbox", [&] (Xml_node const &node_5) {
if (_has_name(node_5, "Leave")) {
@@ -4005,11 +4005,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
Controls_security_master_key_hover const prev_hover { _controls_security_master_key_hover };
Controls_security_master_key_hover next_hover { Controls_security_master_key_hover::NONE };
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
if (_has_name(node_4, "Shut down")) {
@@ -4018,9 +4018,9 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
}
});
});
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_sub_node("hbox", [&] (Xml_node const &node_5) {
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_optional_sub_node("hbox", [&] (Xml_node const &node_5) {
if (_has_name(node_5, "Leave")) {
@@ -4044,11 +4044,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
Controls_security_user_passphrase_hover const prev_hover { _controls_security_user_passphrase_hover };
Controls_security_user_passphrase_hover next_hover { Controls_security_user_passphrase_hover::NONE };
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
if (_has_name(node_4, "Shut down")) {
@@ -4057,9 +4057,9 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
}
});
});
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_sub_node("hbox", [&] (Xml_node const &node_5) {
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
node_4.with_optional_sub_node("hbox", [&] (Xml_node const &node_5) {
if (_has_name(node_5, "Leave")) {

View File

@@ -762,7 +762,7 @@ struct Main
}
bool success = false;
config.with_sub_node("actions", [&] (Genode::Xml_node actions) {
config.with_optional_sub_node("actions", [&] (Genode::Xml_node actions) {
success = _writer->execute_actions(actions); });
_env.parent().exit(success ? 0 : 1);

View File

@@ -318,7 +318,7 @@ void Menu_view::Main::_handle_config()
_background_color = config.attribute_value("background", Color(127, 127, 127, 255));
config.with_sub_node("vfs", [&] (Xml_node const &vfs_node) {
config.with_optional_sub_node("vfs", [&] (Xml_node const &vfs_node) {
_vfs_env.root_dir().apply_config(vfs_node); });
_handle_dialog_update();

View File

@@ -1247,7 +1247,7 @@ struct Sculpt::Main : Input_event_handler,
/*
* Read static platform information
*/
_platform.xml().with_sub_node("affinity-space", [&] (Xml_node const &node) {
_platform.xml().with_optional_sub_node("affinity-space", [&] (Xml_node const &node) {
_affinity_space = Affinity::Space(node.attribute_value("width", 1U),
node.attribute_value("height", 1U));
});

View File

@@ -35,7 +35,7 @@ void Menu_view::_handle_hover()
_seq_number.construct(seq);
}
hover.with_sub_node("dialog", [&] (Xml_node hover) {
hover.with_optional_sub_node("dialog", [&] (Xml_node hover) {
_hovered = true;
hover_result = _dialog.hover(hover);
});

View File

@@ -67,12 +67,12 @@ struct Sculpt::Component : Noncopyable
if (path != pkg.attribute_value("path", Path()))
return;
pkg.with_sub_node("runtime", [&] (Xml_node runtime) {
pkg.with_optional_sub_node("runtime", [&] (Xml_node runtime) {
ram = runtime.attribute_value("ram", Number_of_bytes());
caps = runtime.attribute_value("caps", 0UL);
runtime.with_sub_node("requires", [&] (Xml_node requires) {
runtime.with_optional_sub_node("requires", [&] (Xml_node requires) {
routes.update_from_xml(_route_update_policy, requires); });
});

View File

@@ -68,7 +68,7 @@ struct Sculpt::File_browser_state : Noncopyable
{
unsigned cnt = 0;
with_query_result([&] (Xml_node node) {
node.with_sub_node("dir", [&] (Xml_node listing) {
node.with_optional_sub_node("dir", [&] (Xml_node listing) {
listing.for_each_sub_node([&] (Xml_node entry) {
if (Index(cnt++) == index)
fn(entry); }); }); });

View File

@@ -47,13 +47,13 @@ class Sculpt::Runtime_config
static Start_name _to_name(Xml_node node)
{
Start_name result { };
node.with_sub_node("child", [&] (Xml_node child) {
node.with_optional_sub_node("child", [&] (Xml_node child) {
result = child.attribute_value("name", Start_name()); });
if (result.valid())
return result;
node.with_sub_node("parent", [&] (Xml_node parent) {
node.with_optional_sub_node("parent", [&] (Xml_node parent) {
Service::Type_name const service =
node.attribute_value("name", Service::Type_name());
@@ -143,8 +143,8 @@ class Sculpt::Runtime_config
static Start_name _primary_dependency(Xml_node const start)
{
Start_name result { };
start.with_sub_node("route", [&] (Xml_node route) {
route.with_sub_node("service", [&] (Xml_node service) {
start.with_optional_sub_node("route", [&] (Xml_node route) {
route.with_optional_sub_node("service", [&] (Xml_node service) {
result = _to_name(service); }); });
return result;
@@ -291,14 +291,14 @@ class Sculpt::Runtime_config
{
Dep::Update_policy policy { _alloc };
node.with_sub_node("route", [&] (Xml_node route) {
node.with_optional_sub_node("route", [&] (Xml_node route) {
elem.deps.update_from_xml(policy, route); });
}
{
Child_service::Update_policy policy { elem.name, _alloc };
node.with_sub_node("provides", [&] (Xml_node provides) {
node.with_optional_sub_node("provides", [&] (Xml_node provides) {
elem._child_services.update_from_xml(policy,
provides); });
}

View File

@@ -74,7 +74,7 @@ struct Sculpt::Dialog : Interface
{
Hover_result result = Hover_result::UNMODIFIED;
hover.with_sub_node(sub_node, [&] (Xml_node sub_hover) {
hover.with_optional_sub_node(sub_node, [&] (Xml_node sub_hover) {
if (_match_sub_dialog(sub_hover, tail...) == Hover_result::CHANGED)
result = Hover_result::CHANGED; });

View File

@@ -281,7 +281,7 @@ struct Sculpt::File_browser_dialog : Noncopyable, Dialog
unsigned cnt = 0;
_state.with_query_result([&] (Xml_node node) {
node.with_sub_node("dir", [&] (Xml_node listing) {
node.with_optional_sub_node("dir", [&] (Xml_node listing) {
if (_state.path != "/")
_gen_back_entry(xml);

View File

@@ -631,8 +631,8 @@ void Dialog::handle_hover(Xml_node const &hover)
_hovered_position.construct(max_x, y);
node.with_sub_node("float", [&] (Xml_node node) {
node.with_sub_node("label", [&] (Xml_node node) {
node.with_optional_sub_node("float", [&] (Xml_node node) {
node.with_optional_sub_node("label", [&] (Xml_node node) {
Line::Index const x {
node.attribute_value("at", max_x.value) };
@@ -654,14 +654,14 @@ void Dialog::handle_hover(Xml_node const &hover)
_text_hovered = false;
hover.with_sub_node("frame", [&] (Xml_node node) {
node.with_sub_node("button", [&] (Xml_node node) {
hover.with_optional_sub_node("frame", [&] (Xml_node node) {
node.with_optional_sub_node("button", [&] (Xml_node node) {
_text_hovered = true;
node.with_sub_node("float", [&] (Xml_node node) {
node.with_sub_node("vbox", [&] (Xml_node node) {
node.with_sub_node("hbox", [&] (Xml_node node) {
node.with_optional_sub_node("float", [&] (Xml_node node) {
node.with_optional_sub_node("vbox", [&] (Xml_node node) {
node.with_optional_sub_node("hbox", [&] (Xml_node node) {
with_hovered_line(node); }); }); }); }); });
if (hover_changed || position_changed || (_text_hovered != orig_text_hovered))

View File

@@ -92,7 +92,7 @@ struct Text_area::Main : Sandbox::Local_service_base::Wakeup,
if (!node.has_sub_node("dialog"))
_dialog.handle_hover(Xml_node("<empty/>"));
node.with_sub_node("dialog", [&] (Xml_node const &dialog) {
node.with_optional_sub_node("dialog", [&] (Xml_node const &dialog) {
_dialog.handle_hover(dialog); });
}
@@ -462,7 +462,7 @@ struct Text_area::Main : Sandbox::Local_service_base::Wakeup,
if (_editable()) {
bool const orig_saved_reporter_enabled = _saved_reporter.constructed();
config.with_sub_node("report", [&] (Xml_node const &node) {
config.with_optional_sub_node("report", [&] (Xml_node const &node) {
_saved_reporter.conditional(node.attribute_value("saved", false),
_env, "saved", "saved"); });
@@ -471,7 +471,7 @@ struct Text_area::Main : Sandbox::Local_service_base::Wakeup,
Saved_version const orig_saved_version = _saved_version;
config.with_sub_node("save", [&] (Xml_node const &node) {
config.with_optional_sub_node("save", [&] (Xml_node const &node) {
_saved_version.value =
node.attribute_value("version", _saved_version.value); });

View File

@@ -90,7 +90,7 @@ struct Touch_keyboard::Main : Sandbox::Local_service_base::Wakeup,
{
Input::Seq_number hover_seq { node.attribute_value("seq_number", 0U) };
node.with_sub_node("dialog", [&] (Xml_node const &dialog) {
node.with_optional_sub_node("dialog", [&] (Xml_node const &dialog) {
_dialog.handle_hover(hover_seq, dialog); });
}

View File

@@ -105,10 +105,10 @@ void Dialog::handle_hover(Input::Seq_number seq, Xml_node const &dialog)
Row::Id hovered_row_id { };
Key::Id hovered_key_id { };
dialog.with_sub_node("frame", [&] (Xml_node const &frame) {
frame.with_sub_node("vbox", [&] (Xml_node const &vbox) {
vbox.with_sub_node("hbox", [&] (Xml_node const &hbox) {
hbox.with_sub_node("vbox", [&] (Xml_node const &button) {
dialog.with_optional_sub_node("frame", [&] (Xml_node const &frame) {
frame.with_optional_sub_node("vbox", [&] (Xml_node const &vbox) {
vbox.with_optional_sub_node("hbox", [&] (Xml_node const &hbox) {
hbox.with_optional_sub_node("vbox", [&] (Xml_node const &button) {
hovered_row_id = hbox .attribute_value("name", Row::Id());
hovered_key_id = button.attribute_value("name", Key::Id());
});

View File

@@ -211,7 +211,7 @@ struct Terminal::Main : Character_consumer
_fb_mode = _gui.mode();
/* apply initial size from config, if provided */
_config.xml().with_sub_node("initial", [&] (Xml_node const &initial) {
_config.xml().with_optional_sub_node("initial", [&] (Xml_node const &initial) {
_fb_mode.area = Area(initial.attribute_value("width", _fb_mode.area.w()),
initial.attribute_value("height", _fb_mode.area.h()));
});