LoadFromStream

Signed-off-by: map-per <map-per@gmx.de>
This commit is contained in:
map-per
2025-12-11 16:17:37 +01:00
parent 5d505daff5
commit dcfed1d9b3
4 changed files with 29 additions and 23 deletions

View File

@@ -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<OSMTag> resultVector = getOSMTranslator().osmTagsFromType(type);
std::vector<OSMTag> resultVector = GetOSMTranslator().OsmTagsFromType(type);
TEST_EQUAL(resultVector.size(), 1, ());
OSMTag const & result = resultVector.front();

View File

@@ -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<ModelReader> 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<OSMTag> TypeToOSMTranslator::osmTagsFromType(uint32_t type)
std::vector<OSMTag> 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<OSMTag> TypeToOSMTranslator::osmTagsFromType(uint32_t type)
return it->second;
}
TypeToOSMTranslator & getOSMTranslator()
TypeToOSMTranslator & GetOSMTranslator()
{
static TypeToOSMTranslator translator;
return translator;

View File

@@ -16,15 +16,16 @@ struct OSMTag
class TypeToOSMTranslator
{
public:
TypeToOSMTranslator();
explicit TypeToOSMTranslator(bool initialize = true);
void loadConfigFile();
std::vector<OSMTag> osmTagsFromType(uint32_t type);
void LoadConfigFile();
void LoadFromStream(std::istream & s);
std::vector<OSMTag> OsmTagsFromType(uint32_t type);
private:
std::map<uint32_t, std::vector<OSMTag>> m_storage;
};
TypeToOSMTranslator & getOSMTranslator();
TypeToOSMTranslator & GetOSMTranslator();
} // namespace osm

View File

@@ -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", ());