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(); |