MCPcopy Create free account
hub / github.com/comaps/comaps / ForEachMetadataItem

Method ForEachMetadataItem

libs/indexer/editable_map_object.cpp:198–229  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

196}
197
198void 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
231void EditableMapObject::SetTestId(uint64_t id)
232{

Callers 1

ToXMLFunction · 0.80

Calls 4

ToStringFunction · 0.70
ForEachMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected