From 9d8db80eccd4a0bcdf39072f4510f5466f35a3c3 Mon Sep 17 00:00:00 2001 From: Sergey Yershov Date: Mon, 20 Jul 2015 16:48:59 +0300 Subject: [PATCH] Result types count output --- generator/feature_builder.hpp | 1 + generator/world_map_generator.hpp | 18 ++++++++++++++++++ indexer/feature_data.hpp | 4 ++-- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/generator/feature_builder.hpp b/generator/feature_builder.hpp index c8251becb5..ec23313ccf 100644 --- a/generator/feature_builder.hpp +++ b/generator/feature_builder.hpp @@ -55,6 +55,7 @@ public: inline bool PopExactType(uint32_t type) { return m_params.PopExactType(type); } inline void SetType(uint32_t type) { m_params.SetType(type); } inline uint32_t FindType(uint32_t comp, uint8_t level) const { return m_params.FindType(comp, level); } + inline FeatureParams::TTypes const & GetTypes() const { return m_params.m_Types; } /// Check classificator types for their compatibility with feature geometry type. /// Need to call when using any classificator types manipulating. diff --git a/generator/world_map_generator.hpp b/generator/world_map_generator.hpp index 94b8f625a1..a42ef4adbd 100644 --- a/generator/world_map_generator.hpp +++ b/generator/world_map_generator.hpp @@ -26,6 +26,7 @@ class WorldMapGenerator deque m_waterRegions; m4::Tree m_tree; + map m_mapTypes; public: explicit EmitterImpl(feature::GenerateInfo const & info) @@ -37,6 +38,16 @@ class WorldMapGenerator LOG(LINFO, ("Output World file:", info.GetTmpFileName(WORLD_FILE_NAME))); } + ~EmitterImpl() + { + Classificator const & c = classif(); + + stringstream ss; + for (auto const & p : m_mapTypes) + ss << c.GetReadableObjectName(p.first) << " : " << p.second << endl; + LOG(LINFO, ("World types:\n", ss.str())); + } + void LoadWaterGeometry(string const & rawGeometryFileName) { LOG(LINFO, ("Loading water geometry:", rawGeometryFileName)); @@ -79,6 +90,12 @@ class WorldMapGenerator PushSure(fb); } + void CalcStatistics(FeatureBuilder1 const & fb) + { + for (uint32_t type : fb.GetTypes()) + ++m_mapTypes[type]; + } + bool IsWaterBoundaries(FeatureBuilder1 const & fb) const { return false; @@ -173,6 +190,7 @@ public: { if (m_worldBucket.NeedPushToWorld(fb)) { + m_worldBucket.CalcStatistics(fb); // skip visible water boundary if (m_worldBucket.IsWaterBoundaries(fb)) return; diff --git a/indexer/feature_data.hpp b/indexer/feature_data.hpp index 15c49873e7..a9754ee1f9 100644 --- a/indexer/feature_data.hpp +++ b/indexer/feature_data.hpp @@ -208,8 +208,8 @@ class FeatureParams : public FeatureParamsBase public: - typedef vector types_t; - types_t m_Types; + typedef vector TTypes; + TTypes m_Types; bool m_reverseGeometry;