add value-type and key-type attributes v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sat, 05 Jun 2021 21:01:50 +0200
branchv_0
changeset 33 57cb51fb5212
parent 32 82b7f6e41a65
child 34 0b0d214c3cb2
add value-type and key-type attributes
src/XMLDocumentConstructor.h
--- 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