diff options
author | Maksim Andrianov <maksimandrianov1@gmail.com> | 2020-12-08 14:26:07 +0300 |
---|---|---|
committer | mpimenov <mpimenov@users.noreply.github.com> | 2021-01-25 22:29:29 +0300 |
commit | d903219a8a98fc7b68a87215efa7e8a08e70e563 (patch) | |
tree | 0b2a0d63131f5d1141601567a436436f9a02d9bc /generator | |
parent | 0df8e92640115f6793e07b569114c7b5c0698b8e (diff) |
[generator] Added call Clear().
Diffstat (limited to 'generator')
-rw-r--r-- | generator/osm_source.cpp | 8 | ||||
-rw-r--r-- | generator/raw_generator.cpp | 7 | ||||
-rw-r--r-- | generator/translators_pool.cpp | 2 | ||||
-rw-r--r-- | generator/translators_pool.hpp | 2 |
4 files changed, 13 insertions, 6 deletions
diff --git a/generator/osm_source.cpp b/generator/osm_source.cpp index 6a76031595..ab35f0f7e6 100644 --- a/generator/osm_source.cpp +++ b/generator/osm_source.cpp @@ -123,7 +123,10 @@ void ProcessOsmElementsFromXML(SourceReader & stream, function<void(OsmElement * ProcessorOsmElementsFromXml processorOsmElementsFromXml(stream); OsmElement element; while (processorOsmElementsFromXml.TryRead(element)) + { processor(&element); + element.Clear(); + } } void BuildIntermediateDataFromO5M(SourceReader & stream, cache::IntermediateDataWriter & cache, @@ -144,7 +147,10 @@ void ProcessOsmElementsFromO5M(SourceReader & stream, function<void(OsmElement * ProcessorOsmElementsFromO5M processorOsmElementsFromO5M(stream); OsmElement element; while (processorOsmElementsFromO5M.TryRead(element)) + { processor(&element); + element.Clear(); + } } ProcessorOsmElementsFromO5M::ProcessorOsmElementsFromO5M(SourceReader & stream) @@ -172,8 +178,6 @@ bool ProcessorOsmElementsFromO5M::TryRead(OsmElement & element) } }; - element = {}; - // Be careful, we could call Nodes(), Members(), Tags() from O5MSource::Entity // only once (!). Because these functions read data from file simultaneously with // iterating in loop. Furthermore, into Tags() method calls Nodes.Skip() and Members.Skip(), diff --git a/generator/raw_generator.cpp b/generator/raw_generator.cpp index 8f80118847..3da779ddc5 100644 --- a/generator/raw_generator.cpp +++ b/generator/raw_generator.cpp @@ -183,8 +183,11 @@ bool RawGenerator::GenerateFilteredFeatures() if (++element_pos != m_chunkSize) continue; - translators.Emit(std::move(elements)); - elements = std::vector<OsmElement>(m_chunkSize); + translators.Emit(elements); + + for (auto & e : elements) + e.Clear(); + element_pos = 0; } elements.resize(element_pos); diff --git a/generator/translators_pool.cpp b/generator/translators_pool.cpp index 137e4381db..fa9ec7b195 100644 --- a/generator/translators_pool.cpp +++ b/generator/translators_pool.cpp @@ -15,7 +15,7 @@ TranslatorsPool::TranslatorsPool(std::shared_ptr<TranslatorInterface> const & or m_translators.Push(original->Clone()); } -void TranslatorsPool::Emit(std::vector<OsmElement> && elements) +void TranslatorsPool::Emit(std::vector<OsmElement> elements) { std::shared_ptr<TranslatorInterface> translator; m_translators.WaitAndPop(translator); diff --git a/generator/translators_pool.hpp b/generator/translators_pool.hpp index f2e973cd24..d2c4c73f2c 100644 --- a/generator/translators_pool.hpp +++ b/generator/translators_pool.hpp @@ -18,7 +18,7 @@ public: explicit TranslatorsPool(std::shared_ptr<TranslatorInterface> const & original, size_t threadCount); - void Emit(std::vector<OsmElement> && elements); + void Emit(std::vector<OsmElement> elements); bool Finish(); private: |