--- a/src/XMLDocumentConstructor.h Sat Jun 05 20:03:13 2021 +0200
+++ b/src/XMLDocumentConstructor.h Sat Jun 05 21:01:50 2021 +0200
@@ -87,12 +87,16 @@
void appendScalarValue(Glib::ustring value, Glib::ustring cborType, bool isNull = false) {
// TODO: null
if (mode.back() == Mode::ARRAY) {
- current->add_child(itemName)->add_child_text(value);
+ xmlpp::Element* element = current->add_child(itemName);
+ element->add_child_text(value);
+ element->set_attribute("value-type", cborType);
} else if (mode.back() == Mode::MAP_KEY) {
current = current->add_child(value);
+ current->set_attribute("key-type", cborType);
mode.push_back(Mode::MAP_VALUE);
} else if (mode.back() == Mode::MAP_VALUE) {
current->add_child_text(value);
+ current->set_attribute("value-type", cborType);
current = parentOrSelf(current);
mode.pop_back();
} else if (mode.back() == Mode::ROOT) {
@@ -123,6 +127,7 @@
if (mode.back() == Mode::ROOT) {
} else if (mode.back() == Mode::ARRAY) {
current = current->add_child(itemName);
+ current->set_attribute("value-type", "map");
} else if (mode.back() == Mode::MAP_VALUE) {
mode.pop_back();
// TODO: remainingItems
@@ -136,7 +141,6 @@
}
void containerEnd() {
- current->add_child_comment(Glib::ustring::compose("end of a container: mode = %1", (int) mode.back())); // FIXME: remove
remainingItems.pop_back();
if (mode.back() == Mode::MAP_KEY || mode.back() == Mode::MAP_VALUE) current = parentOrSelf(current);
mode.pop_back(); // TODO: assert map/array