diff --git a/generator/osm2type.cpp b/generator/osm2type.cpp index c83f69fb2c..e10e840538 100644 --- a/generator/osm2type.cpp +++ b/generator/osm2type.cpp @@ -842,18 +842,6 @@ void GetNameAndType(OsmElement * p, FeatureParams & params, function({ - {"addr:city", "*", - [¶ms](string & k, string & v) { - params.AddPlace(v); - k.clear(); - v.clear(); - }}, - {"addr:place", "*", - [¶ms](string & k, string & v) { - params.AddPlace(v); - k.clear(); - v.clear(); - }}, {"addr:housenumber", "*", [¶ms](string & k, string & v) { params.AddHouseName(v); diff --git a/generator/search_index_builder.cpp b/generator/search_index_builder.cpp index 1bb4c0a1ac..cdb1350bc3 100644 --- a/generator/search_index_builder.cpp +++ b/generator/search_index_builder.cpp @@ -506,8 +506,8 @@ void BuildAddressTable(FilesContainerR & container, Writer & writer, uint32_t th for (uint32_t i = beg; i < end; ++i) { uint32_t streetIndex; - bool const found = GetStreetIndex(*(contexts[threadIdx]), i, - addrs[i].Get(feature::AddressData::STREET), streetIndex); + bool const found = GetStreetIndex( + *(contexts[threadIdx]), i, addrs[i].Get(feature::AddressData::Type::Street), streetIndex); lock_guard guard(resMutex); diff --git a/indexer/feature_data.cpp b/indexer/feature_data.cpp index ecce1751cc..59c0605b8b 100644 --- a/indexer/feature_data.cpp +++ b/indexer/feature_data.cpp @@ -341,7 +341,7 @@ void FeatureParams::AddStreet(string s) // Replace \n with spaces because we write addresses to txt file. replace(s.begin(), s.end(), '\n', ' '); - m_addrTags.Add(AddressData::STREET, s); + m_addrTags.Add(AddressData::Type::Street, s); } void FeatureParams::AddAddress(string const & s) @@ -368,20 +368,12 @@ void FeatureParams::AddAddress(string const & s) AddStreet(s.substr(i)); } -void FeatureParams::AddPlace(string const & s) -{ - m_addrTags.Add(AddressData::PLACE, s); -} - void FeatureParams::AddPostcode(string const & s) { - m_addrTags.Add(AddressData::POSTCODE, s); + m_addrTags.Add(AddressData::Type::Postcode, s); } -string FeatureParams::GetStreet() const -{ - return m_addrTags.Get(AddressData::STREET); -} +string FeatureParams::GetStreet() const { return m_addrTags.Get(AddressData::Type::Street); } void FeatureParams::SetGeomType(feature::GeomType t) { diff --git a/indexer/feature_data.hpp b/indexer/feature_data.hpp index 6bf9a083ad..4d46847b9c 100644 --- a/indexer/feature_data.hpp +++ b/indexer/feature_data.hpp @@ -238,7 +238,6 @@ public: /// @name Used in storing full street address only. //@{ void AddStreet(std::string s); - void AddPlace(std::string const & s); void AddPostcode(std::string const & s); void AddAddress(std::string const & s); //@} diff --git a/indexer/feature_meta.hpp b/indexer/feature_meta.hpp index c28e36d9c4..6380f5373f 100644 --- a/indexer/feature_meta.hpp +++ b/indexer/feature_meta.hpp @@ -3,6 +3,8 @@ #include "coding/reader.hpp" #include "coding/string_utf8_multilang.hpp" +#include "base/stl_helpers.hpp" + #include #include #include @@ -187,13 +189,19 @@ private: class AddressData : public MetadataBase { public: - enum Type { PLACE, STREET, POSTCODE }; + enum class Type : uint8_t + { + Street, + Postcode + }; void Add(Type type, std::string const & s) { /// @todo Probably, we need to add separator here and store multiple values. - MetadataBase::Set(type, s); + MetadataBase::Set(base::Underlying(type), s); } + + std::string Get(Type type) const { return MetadataBase::Get(base::Underlying(type)); } }; class RegionData : public MetadataBase