diff --git a/generator/feature_maker_base.cpp b/generator/feature_maker_base.cpp index a5a491b..5c2888c 100644 --- a/generator/feature_maker_base.cpp +++ b/generator/feature_maker_base.cpp @@ -10,10 +10,10 @@ using namespace feature; namespace generator { -FeatureMakerBase::FeatureMakerBase(std::shared_ptr const & cache) +FeatureMakerBase::FeatureMakerBase(std::shared_ptr const & cache) : m_cache(cache) {} -void FeatureMakerBase::SetCache(std::shared_ptr const & cache) +void FeatureMakerBase::SetCache(std::shared_ptr const & cache) { m_cache = cache; } diff --git a/generator/feature_maker_base.hpp b/generator/feature_maker_base.hpp index 7b049e3..278ea70 100644 --- a/generator/feature_maker_base.hpp +++ b/generator/feature_maker_base.hpp @@ -19,12 +19,12 @@ class IntermediateData; class FeatureMakerBase { public: - explicit FeatureMakerBase(std::shared_ptr const & cache = {}); + explicit FeatureMakerBase(std::shared_ptr const & cache = {}); virtual ~FeatureMakerBase() = default; virtual std::shared_ptr Clone() const = 0; - void SetCache(std::shared_ptr const & cache); + void SetCache(std::shared_ptr const & cache); // Reference on element is non const because ftype::GetNameAndType will be call. virtual bool Add(OsmElement & element); @@ -40,7 +40,7 @@ protected: virtual void ParseParams(FeatureParams & params, OsmElement & element) const = 0; - std::shared_ptr m_cache; + std::shared_ptr m_cache; std::queue m_queue; }; diff --git a/generator/intermediate_data.cpp b/generator/intermediate_data.cpp index 43f0406..344bda4 100644 --- a/generator/intermediate_data.cpp +++ b/generator/intermediate_data.cpp @@ -547,9 +547,9 @@ shared_ptr const & IntermediateData::GetCache() const return m_reader; } -shared_ptr IntermediateData::Clone() const +shared_ptr IntermediateData::Clone() const { - return make_shared(m_info); + return shared_from_this(); } } // namespace cache } // namespace generator diff --git a/generator/intermediate_data.hpp b/generator/intermediate_data.hpp index ddd084a..ccf7edd 100644 --- a/generator/intermediate_data.hpp +++ b/generator/intermediate_data.hpp @@ -138,7 +138,7 @@ public: bool forceReload = false); template - bool Read(Key id, Value & value) + bool Read(Key id, Value & value) const { uint64_t pos = 0; if (!m_offsetsReader.GetValueByKey(id, pos)) @@ -254,24 +254,24 @@ public: // TODO |GetNode()|, |lat|, |lon| are used as y, x in real. bool GetNode(Key id, double & lat, double & lon) const { return m_nodes.GetPoint(id, lat, lon); } - bool GetWay(Key id, WayElement & e) { return m_ways.Read(id, e); } + bool GetWay(Key id, WayElement & e) const { return m_ways.Read(id, e); } template - void ForEachRelationByWay(Key id, ToDo && toDo) + void ForEachRelationByWay(Key id, ToDo && toDo) const { RelationProcessor processor(m_relations, std::forward(toDo)); m_wayToRelations.ForEachByKey(id, processor); } template - void ForEachRelationByWayCached(Key id, ToDo && toDo) + void ForEachRelationByWayCached(Key id, ToDo && toDo) const { CachedRelationProcessor processor(m_relations, std::forward(toDo)); m_wayToRelations.ForEachByKey(id, processor); } template - void ForEachRelationByNodeCached(Key id, ToDo && toDo) + void ForEachRelationByNodeCached(Key id, ToDo && toDo) const { CachedRelationProcessor processor(m_relations, std::forward(toDo)); m_nodeToRelations.ForEachByKey(id, processor); @@ -284,7 +284,8 @@ private: class ElementProcessorBase { public: - ElementProcessorBase(CacheReader & reader, ToDo & toDo) : m_reader(reader), m_toDo(toDo) {} + ElementProcessorBase(CacheReader const & reader, ToDo & toDo) : m_reader(reader), m_toDo(toDo) + { } base::ControlFlow operator()(uint64_t id) { @@ -293,7 +294,7 @@ private: } protected: - CacheReader & m_reader; + CacheReader const & m_reader; ToDo & m_toDo; }; @@ -302,7 +303,7 @@ private: { using Base = ElementProcessorBase; - RelationProcessor(CacheReader & reader, ToDo & toDo) : Base(reader, toDo) {} + RelationProcessor(CacheReader const & reader, ToDo & toDo) : Base(reader, toDo) {} }; template @@ -310,13 +311,13 @@ private: { using Base = RelationProcessor; - CachedRelationProcessor(CacheReader & reader, ToDo & toDo) : Base(reader, toDo) {} + CachedRelationProcessor(CacheReader const & reader, ToDo & toDo) : Base(reader, toDo) {} base::ControlFlow operator()(uint64_t id) { return this->m_toDo(id, this->m_reader); } }; PointStorageReaderInterface const & m_nodes; - cache::OSMElementCacheReader m_ways; - cache::OSMElementCacheReader m_relations; + cache::OSMElementCacheReader const m_ways; + cache::OSMElementCacheReader const m_relations; cache::IndexFileReader const & m_nodeToRelations; cache::IndexFileReader const & m_wayToRelations; }; @@ -368,12 +369,12 @@ CreatePointStorageReader(feature::GenerateInfo::NodeStorageType type, std::strin std::unique_ptr CreatePointStorageWriter(feature::GenerateInfo::NodeStorageType type, std::string const & name); -class IntermediateData +class IntermediateData : public std::enable_shared_from_this { public: explicit IntermediateData(feature::GenerateInfo const & info, bool forceReload = false); std::shared_ptr const & GetCache() const; - std::shared_ptr Clone() const; + std::shared_ptr Clone() const; private: feature::GenerateInfo const & m_info; diff --git a/generator/raw_generator.hpp b/generator/raw_generator.hpp index 528ea0d..4616c5c 100644 --- a/generator/raw_generator.hpp +++ b/generator/raw_generator.hpp @@ -57,7 +57,7 @@ private: feature::GenerateInfo & m_genInfo; size_t m_chunkSize; - std::shared_ptr m_cache; + std::shared_ptr m_cache; std::shared_ptr m_queue; std::shared_ptr m_translators; std::priority_queue, FinalProcessorPtrCmp> m_finalProcessors; diff --git a/generator/translator.cpp b/generator/translator.cpp index 0b5403f..13417eb 100644 --- a/generator/translator.cpp +++ b/generator/translator.cpp @@ -11,7 +11,7 @@ using namespace feature; namespace generator { Translator::Translator(std::shared_ptr const & processor, - std::shared_ptr const & cache, + std::shared_ptr const & cache, std::shared_ptr const & maker, std::shared_ptr const & filter, std::shared_ptr const & collector) @@ -26,7 +26,7 @@ Translator::Translator(std::shared_ptr const & proces } Translator::Translator(std::shared_ptr const & processor, - std::shared_ptr const & cache, + std::shared_ptr const & cache, std::shared_ptr const & maker) : Translator(processor, cache, maker, std::make_shared(), std::make_shared()) { diff --git a/generator/translator.hpp b/generator/translator.hpp index 1b05055..05c4541 100644 --- a/generator/translator.hpp +++ b/generator/translator.hpp @@ -27,12 +27,12 @@ class Translator : public TranslatorInterface { public: explicit Translator(std::shared_ptr const & processor, - std::shared_ptr const & cache, + std::shared_ptr const & cache, std::shared_ptr const & maker, std::shared_ptr const & filter, std::shared_ptr const & collector); explicit Translator(std::shared_ptr const & processor, - std::shared_ptr const & cache, + std::shared_ptr const & cache, std::shared_ptr const & maker); void SetCollector(std::shared_ptr const & collector); @@ -66,6 +66,6 @@ protected: RelationTagsEnricher m_tagsEnricher; std::shared_ptr m_featureMaker; std::shared_ptr m_processor; - std::shared_ptr m_cache; + std::shared_ptr m_cache; }; } // namespace generator diff --git a/generator/translator_geo_objects.cpp b/generator/translator_geo_objects.cpp index dc54bea..28f0419 100644 --- a/generator/translator_geo_objects.cpp +++ b/generator/translator_geo_objects.cpp @@ -11,8 +11,9 @@ namespace generator { -TranslatorGeoObjects::TranslatorGeoObjects(std::shared_ptr const & processor, - std::shared_ptr const & cache) +TranslatorGeoObjects::TranslatorGeoObjects( + std::shared_ptr const & processor, + std::shared_ptr const & cache) : Translator(processor, cache, std::make_shared(cache)) { diff --git a/generator/translator_geo_objects.hpp b/generator/translator_geo_objects.hpp index 3c0c9e8..5989fb5 100644 --- a/generator/translator_geo_objects.hpp +++ b/generator/translator_geo_objects.hpp @@ -18,7 +18,7 @@ class TranslatorGeoObjects : public Translator { public: explicit TranslatorGeoObjects(std::shared_ptr const & processor, - std::shared_ptr const & cache); + std::shared_ptr const & cache); // TranslatorInterface overrides: std::shared_ptr Clone() const override; diff --git a/generator/translator_region.cpp b/generator/translator_region.cpp index d2c1145..539e28e 100644 --- a/generator/translator_region.cpp +++ b/generator/translator_region.cpp @@ -52,7 +52,7 @@ public: } // namespace TranslatorRegion::TranslatorRegion(std::shared_ptr const & processor, - std::shared_ptr const & cache, + std::shared_ptr const & cache, std::string const & regionsInfoPath) : Translator(processor, cache, std::make_shared(cache)) diff --git a/generator/translator_region.hpp b/generator/translator_region.hpp index f5a6903..424b125 100644 --- a/generator/translator_region.hpp +++ b/generator/translator_region.hpp @@ -22,7 +22,7 @@ class TranslatorRegion : public Translator { public: explicit TranslatorRegion(std::shared_ptr const & processor, - std::shared_ptr const & cache, + std::shared_ptr const & cache, std::string const & regionsInfoPath); // TranslatorInterface overrides: diff --git a/generator/translator_streets.cpp b/generator/translator_streets.cpp index 9aed1fd..fab0591 100644 --- a/generator/translator_streets.cpp +++ b/generator/translator_streets.cpp @@ -7,8 +7,9 @@ namespace generator { -TranslatorStreets::TranslatorStreets(std::shared_ptr const & processor, - std::shared_ptr const & cache) +TranslatorStreets::TranslatorStreets( + std::shared_ptr const & processor, + std::shared_ptr const & cache) : Translator(processor, cache, std::make_shared(cache)) { diff --git a/generator/translator_streets.hpp b/generator/translator_streets.hpp index 9b5cf7a..4373124 100644 --- a/generator/translator_streets.hpp +++ b/generator/translator_streets.hpp @@ -18,7 +18,7 @@ class TranslatorStreets : public Translator { public: explicit TranslatorStreets(std::shared_ptr const & processor, - std::shared_ptr const & cache); + std::shared_ptr const & cache); // TranslatorInterface overrides: std::shared_ptr Clone() const override;