Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'generator/metalines_builder.hpp')
-rw-r--r--generator/metalines_builder.hpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/generator/metalines_builder.hpp b/generator/metalines_builder.hpp
index 8fd89af7f1..43c4c2fba6 100644
--- a/generator/metalines_builder.hpp
+++ b/generator/metalines_builder.hpp
@@ -4,6 +4,10 @@
#include "generator/feature_builder.hpp"
#include "generator/osm_element.hpp"
+#include "coding/reader.hpp"
+#include "coding/write_to_sink.hpp"
+#include "coding/writer.hpp"
+
#include <cstdlib>
#include <cstdint>
#include <map>
@@ -37,7 +41,29 @@ public:
uint64_t GetStart() const { return m_start; }
uint64_t GetEnd() const { return m_end; }
+ template <typename T>
+ void Serialize(T & w)
+ {
+ WriteVarUint(w, m_start);
+ WriteVarUint(w, m_end);
+ WriteToSink(w, m_oneway);
+ rw::WriteVectorOfPOD(w, m_ways);
+ }
+
+ template <typename T>
+ static LineString Deserialize(T & r)
+ {
+ LineString ls;
+ ls.m_start = ReadVarUint<uint64_t>(r);
+ ls.m_end = ReadVarUint<uint64_t>(r);
+ ReadPrimitiveFromSource(r, ls.m_oneway);
+ rw::ReadVectorOfPOD(r, ls.m_ways);
+ return ls;
+ }
+
private:
+ LineString() = default;
+
uint64_t m_start;
uint64_t m_end;
bool m_oneway;
@@ -75,6 +101,8 @@ public:
/// Add a highway segment to the collection of metalines.
void CollectFeature(FeatureBuilder const & feature, OsmElement const & element) override;
+ void Finish() override;
+
void Merge(generator::CollectorInterface const & collector) override;
void MergeInto(MetalinesBuilder & collector) const override;
@@ -83,7 +111,7 @@ protected:
void OrderCollectedData() override;
private:
- std::unordered_multimap<size_t, std::shared_ptr<LineString>> m_data;
+ std::unique_ptr<FileWriter> m_writer;
};
// Read an intermediate file from MetalinesBuilder and convert it to an mwm section.