From dcfed1d9b3bf77ec128a97aaff749fbdb24d010b Mon Sep 17 00:00:00 2001 From: map-per Date: Thu, 11 Dec 2025 16:17:37 +0100 Subject: [PATCH] LoadFromStream Signed-off-by: map-per --- .../editor_tests/feature_type_to_osm_test.cpp | 6 ++-- libs/editor/feature_type_to_osm.cpp | 33 +++++++++++-------- libs/editor/feature_type_to_osm.hpp | 9 ++--- libs/editor/xml_feature.cpp | 4 +-- 4 files changed, 29 insertions(+), 23 deletions(-) diff --git a/libs/editor/editor_tests/feature_type_to_osm_test.cpp b/libs/editor/editor_tests/feature_type_to_osm_test.cpp index 231023007..68d20541b 100644 --- a/libs/editor/editor_tests/feature_type_to_osm_test.cpp +++ b/libs/editor/editor_tests/feature_type_to_osm_test.cpp @@ -9,16 +9,16 @@ using namespace editor; UNIT_TEST(loadConfigFile) { - // loadConfigFile() is executed in the constructor + // LoadConfigFile() is executed in the constructor TypeToOSMTranslator typeToOsm; } -UNIT_TEST(osmTagsFromType) +UNIT_TEST(OsmTagsFromType) { classificator::Load(); uint32_t type = classif().GetTypeByReadableObjectName("amenity-restaurant"); - std::vector resultVector = getOSMTranslator().osmTagsFromType(type); + std::vector resultVector = GetOSMTranslator().OsmTagsFromType(type); TEST_EQUAL(resultVector.size(), 1, ()); OSMTag const & result = resultVector.front(); diff --git a/libs/editor/feature_type_to_osm.cpp b/libs/editor/feature_type_to_osm.cpp index ec060c9bb..7f32fe121 100644 --- a/libs/editor/feature_type_to_osm.cpp +++ b/libs/editor/feature_type_to_osm.cpp @@ -6,20 +6,18 @@ #include "indexer/classificator.hpp" #include "platform/platform.hpp" - namespace editor { - TypeToOSMTranslator::TypeToOSMTranslator() - { - loadConfigFile(); - } +TypeToOSMTranslator::TypeToOSMTranslator(bool initialize) +{ + if (initialize) + LoadConfigFile(); +} - void TypeToOSMTranslator::loadConfigFile() { - LOG(LINFO, ("Hello from loadConfigFile")); +void TypeToOSMTranslator::LoadConfigFile() { + LOG(LINFO, ("Hello from LoadConfigFile")); - m_storage.clear(); - - Platform & p = GetPlatform(); + Platform &p = GetPlatform(); std::unique_ptr reader = p.GetReader("mapcss-mapping.csv"); @@ -28,6 +26,13 @@ namespace editor ReaderStreamBuf buffer(std::move(reader)); std::istream s(&buffer); + LoadFromStream(s); +} + +void TypeToOSMTranslator::LoadFromStream(std::istream & s) +{ + m_storage.clear(); + std::string line; int lineNumber = 0; @@ -89,15 +94,15 @@ namespace editor } - if (lineNumber > 500) + if (lineNumber > 80) break; } } -std::vector TypeToOSMTranslator::osmTagsFromType(uint32_t type) +std::vector TypeToOSMTranslator::OsmTagsFromType(uint32_t type) { - LOG(LINFO, ("Computing osmTagsFromType for Type: ", type, "/ " , classif().GetReadableObjectName(type))); + LOG(LINFO, ("Computing OsmTagsFromType for Type: ", type, "/ " , classif().GetReadableObjectName(type))); auto it = m_storage.find(type); @@ -110,7 +115,7 @@ std::vector TypeToOSMTranslator::osmTagsFromType(uint32_t type) return it->second; } -TypeToOSMTranslator & getOSMTranslator() +TypeToOSMTranslator & GetOSMTranslator() { static TypeToOSMTranslator translator; return translator; diff --git a/libs/editor/feature_type_to_osm.hpp b/libs/editor/feature_type_to_osm.hpp index ad4fe6fba..e3a490f7a 100644 --- a/libs/editor/feature_type_to_osm.hpp +++ b/libs/editor/feature_type_to_osm.hpp @@ -16,15 +16,16 @@ struct OSMTag class TypeToOSMTranslator { public: - TypeToOSMTranslator(); + explicit TypeToOSMTranslator(bool initialize = true); - void loadConfigFile(); - std::vector osmTagsFromType(uint32_t type); + void LoadConfigFile(); + void LoadFromStream(std::istream & s); + std::vector OsmTagsFromType(uint32_t type); private: std::map> m_storage; }; -TypeToOSMTranslator & getOSMTranslator(); +TypeToOSMTranslator & GetOSMTranslator(); } // namespace osm \ No newline at end of file diff --git a/libs/editor/xml_feature.cpp b/libs/editor/xml_feature.cpp index 5f98089c8..cea9d6c21 100644 --- a/libs/editor/xml_feature.cpp +++ b/libs/editor/xml_feature.cpp @@ -642,9 +642,9 @@ void XMLFeature::RemoveTag(string_view key) void XMLFeature::SetOSMTagsForType(uint32_t type) { - TypeToOSMTranslator translator = getOSMTranslator(); + TypeToOSMTranslator translator = GetOSMTranslator(); - auto result = translator.osmTagsFromType(type); + auto result = translator.OsmTagsFromType(type); ASSERT(!result.empty(), ()); ASSERT_EQUAL(result[0].key, "amenity", ());