| 196 | } |
| 197 | |
| 198 | void EditableMapObject::ForEachMetadataItem(function<void(string_view tag, string_view value)> const & fn) const |
| 199 | { |
| 200 | m_metadata.ForEach([&fn](MetadataID type, std::string_view value) |
| 201 | { |
| 202 | switch (type) |
| 203 | { |
| 204 | // Multilang description may produce several tags with different values. |
| 205 | case MetadataID::FMD_DESCRIPTION: |
| 206 | { |
| 207 | auto const mlDescr = StringUtf8Multilang::FromBuffer(std::string(value)); |
| 208 | mlDescr.ForEach([&fn](int8_t code, string_view v) |
| 209 | { |
| 210 | if (code == localisation::kDefaultNameIndex) |
| 211 | fn("description", v); |
| 212 | else |
| 213 | fn(string("description:").append(localisation::ConvertLanguageIndexToLanguageCode(code)), v); |
| 214 | }); |
| 215 | break; |
| 216 | } |
| 217 | // Skip non-string values (they are not related to OSM anyway). |
| 218 | case MetadataID::FMD_CUSTOM_IDS: |
| 219 | case MetadataID::FMD_PRICE_RATES: |
| 220 | case MetadataID::FMD_RATINGS: |
| 221 | case MetadataID::FMD_EXTERNAL_URI: |
| 222 | case MetadataID::FMD_WHEELCHAIR: // Value is runtime only, data is taken from the classificator types, should not |
| 223 | // be used to update the OSM database |
| 224 | case MetadataID::FMD_CHARGE_SOCKETS: // multiple keys; handled via the edit journal |
| 225 | break; |
| 226 | default: fn(ToString(type), value); break; |
| 227 | } |
| 228 | }); |
| 229 | } |
| 230 | |
| 231 | void EditableMapObject::SetTestId(uint64_t id) |
| 232 | { |
no test coverage detected