src/XMLDocumentConstructor.h
branchv_0
changeset 42 c97b6152016a
parent 41 b11458587f20
child 43 6b194b178946
equal deleted inserted replaced
41:b11458587f20 42:c97b6152016a
   149 		if (size == 0) containerEnd();
   149 		if (size == 0) containerEnd();
   150 	}
   150 	}
   151 
   151 
   152 	void mapStart(ssize_t size) {
   152 	void mapStart(ssize_t size) {
   153 		if (mode.back() == Mode::ROOT) {
   153 		if (mode.back() == Mode::ROOT) {
   154 			current->set_attribute("value-type", "map");
       
   155 		} else if (mode.back() == Mode::ARRAY) {
   154 		} else if (mode.back() == Mode::ARRAY) {
   156 			current = current->add_child(nameCodec.encode(itemName));
   155 			current = current->add_child(nameCodec.encode(itemName));
   157 			current->set_attribute("value-type", "map");
       
   158 		} else if (mode.back() == Mode::MAP_VALUE) {
   156 		} else if (mode.back() == Mode::MAP_VALUE) {
   159 			mode.pop_back();
   157 			mode.pop_back();
   160 			// TODO: remainingItems
   158 			// TODO: remainingItems
   161 		} else {
   159 		} else {
   162 			// TODO: map might be a key of another map → wrap/nest
   160 			// TODO: map might be a key of another map → wrap/nest
   163 			// …probably not
   161 			// …probably not
   164 		}
   162 		}
   165 
   163 
       
   164 		current->set_attribute("value-type", "map");
       
   165 
   166 		mode.push_back(Mode::MAP_KEY);
   166 		mode.push_back(Mode::MAP_KEY);
   167 		remainingItems.push_back(size);
   167 		remainingItems.push_back(size);
   168 		writeCurrentTag(current);
   168 		writeCurrentTag(current);
   169 
   169 
   170 		if (size == 0) containerEnd();
   170 		if (size == 0) containerEnd();