diff --git a/repos/os/include/util/xml_generator.h b/repos/os/include/util/xml_generator.h index 6ff809701..0b5f8054f 100644 --- a/repos/os/include/util/xml_generator.h +++ b/repos/os/include/util/xml_generator.h @@ -318,13 +318,45 @@ class Genode::Xml_generator _curr_node->insert_attribute(name, str.string()); } - void attribute(char const *name, long value) + void attribute(char const *name, bool value) + { + _curr_node->insert_attribute(name, value ? "true" : "false"); + } + + void attribute(char const *name, long long value) { char buf[64]; - Genode::snprintf(buf, sizeof(buf), "%ld", value); + Genode::snprintf(buf, sizeof(buf), "%lld", value); _curr_node->insert_attribute(name, buf); } + void attribute(char const *name, long value) + { + attribute(name, static_cast(value)); + } + + void attribute(char const *name, int value) + { + attribute(name, static_cast(value)); + } + + void attribute(char const *name, unsigned long long value) + { + char buf[64]; + Genode::snprintf(buf, sizeof(buf), "%llu", value); + _curr_node->insert_attribute(name, buf); + } + + void attribute(char const *name, unsigned long value) + { + attribute(name, static_cast(value)); + } + + void attribute(char const *name, unsigned value) + { + attribute(name, static_cast(value)); + } + /** * Append content to XML node * diff --git a/repos/os/run/xml_generator.run b/repos/os/run/xml_generator.run index f01d1cdc1..5e14f9b10 100644 --- a/repos/os/run/xml_generator.run +++ b/repos/os/run/xml_generator.run @@ -35,7 +35,7 @@ compare_output_to { [init -> test-xml_generator] --- XML generator test started --- [init -> test-xml_generator] result: [init -> test-xml_generator] - [init -> test-xml_generator] + [init -> test-xml_generator] [init -> test-xml_generator] [init -> test-xml_generator] + [init -> test-xml_generator] + [init -> test-xml_generator] + [init -> test-xml_generator] [init -> test-xml_generator] [init -> test-xml_generator] - [init -> test-xml_generator] used 200 bytes + [init -> test-xml_generator] used 307 bytes [init -> test-xml_generator] buffer exceeded (expected error) [init -> test-xml_generator] --- XML generator test finished --- } diff --git a/repos/os/src/test/xml_generator/main.cc b/repos/os/src/test/xml_generator/main.cc index 8cf4c925f..df988c1b7 100644 --- a/repos/os/src/test/xml_generator/main.cc +++ b/repos/os/src/test/xml_generator/main.cc @@ -39,7 +39,23 @@ static size_t fill_buffer_with_xml(char *dst, size_t dst_len) xml.node("sub_sub_label"); }); }); - xml.attribute("verbose", "true"); + xml.node("bool", [&] () + { + xml.attribute("true", true); + xml.attribute("false", false); + }); + xml.node("signed", [&] () + { + xml.attribute("int", -1); + xml.attribute("long", -2L); + xml.attribute("longlong", -3LL); + }); + xml.node("unsigned", [&] () + { + xml.attribute("int", 1U); + xml.attribute("long", 2UL); + xml.attribute("longlong", 3ULL); + }); }); return xml.used();