src/XMLDocumentConstructor.h
branchv_0
changeset 35 5bfd1d389d5f
parent 34 0b0d214c3cb2
child 36 c97810ccfdef
equal deleted inserted replaced
34:0b0d214c3cb2 35:5bfd1d389d5f
    65 	 */
    65 	 */
    66 	static std::string c2x(cbor_data value, uint64_t length) {
    66 	static std::string c2x(cbor_data value, uint64_t length) {
    67 		return value && length > 0 ? std::string((const char*) value, length) : "";
    67 		return value && length > 0 ? std::string((const char*) value, length) : "";
    68 	}
    68 	}
    69 
    69 
    70 	const Glib::ustring c2xname(cbor_data value, uint64_t length) {
       
    71 		return nameCodec.encode(c2x(value, length));
       
    72 	}
       
    73 
       
    74 	xmlpp::Element* parentOrSelf(xmlpp::Element* current) {
    70 	xmlpp::Element* parentOrSelf(xmlpp::Element* current) {
    75 		return current->get_parent() == nullptr ? current : current->get_parent();
    71 		return current->get_parent() == nullptr ? current : current->get_parent();
    76 	}
    72 	}
    77 
    73 
    78 	void checkRemainingItems() {
    74 	void checkRemainingItems() {
    85 	}
    81 	}
    86 
    82 
    87 	void appendScalarValue(Glib::ustring value, Glib::ustring cborType, bool isNull = false) {
    83 	void appendScalarValue(Glib::ustring value, Glib::ustring cborType, bool isNull = false) {
    88 		// TODO: null
    84 		// TODO: null
    89 		if (mode.back() == Mode::ARRAY) {
    85 		if (mode.back() == Mode::ARRAY) {
    90 			xmlpp::Element* element = current->add_child(itemName);
    86 			xmlpp::Element* element = current->add_child(nameCodec.encode(itemName));
    91 			element->add_child_text(value);
    87 			element->add_child_text(value);
    92 			element->set_attribute("value-type", cborType);
    88 			element->set_attribute("value-type", cborType);
    93 		} else if (mode.back() == Mode::MAP_KEY) {
    89 		} else if (mode.back() == Mode::MAP_KEY) {
    94 			current = current->add_child(value);
    90 			current = current->add_child(nameCodec.encode(value));
    95 			current->set_attribute("key-type", cborType);
    91 			current->set_attribute("key-type", cborType);
    96 			mode.push_back(Mode::MAP_VALUE);
    92 			mode.push_back(Mode::MAP_VALUE);
    97 		} else if (mode.back() == Mode::MAP_VALUE) {
    93 		} else if (mode.back() == Mode::MAP_VALUE) {
    98 			current->add_child_text(value);
    94 			current->add_child_text(value);
    99 			current->set_attribute("value-type", cborType);
    95 			current->set_attribute("value-type", cborType);
   124 	}
   120 	}
   125 
   121 
   126 	void mapStart(ssize_t size) {
   122 	void mapStart(ssize_t size) {
   127 		if (mode.back() == Mode::ROOT) {
   123 		if (mode.back() == Mode::ROOT) {
   128 		} else if (mode.back() == Mode::ARRAY) {
   124 		} else if (mode.back() == Mode::ARRAY) {
   129 			current = current->add_child(itemName);
   125 			current = current->add_child(nameCodec.encode(itemName));
   130 			current->set_attribute("value-type", "map");
   126 			current->set_attribute("value-type", "map");
   131 		} else if (mode.back() == Mode::MAP_VALUE) {
   127 		} else if (mode.back() == Mode::MAP_VALUE) {
   132 			mode.pop_back();
   128 			mode.pop_back();
   133 			// TODO: remainingItems
   129 			// TODO: remainingItems
   134 		} else {
   130 		} else {