From 6f732eae2c64c2411efcda3bac6ad79df32864bb Mon Sep 17 00:00:00 2001 From: vng Date: Mon, 15 Oct 2012 13:00:49 +0300 Subject: [PATCH] Add check_mwm flag for generator_tool - do check map file to be correct. --- generator/check_model.cpp | 37 +++++++++++++++++++++ generator/check_model.hpp | 7 ++++ generator/generator.pro | 2 ++ generator/generator_tool/generator_tool.cpp | 8 ++++- 4 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 generator/check_model.cpp create mode 100644 generator/check_model.hpp diff --git a/generator/check_model.cpp b/generator/check_model.cpp new file mode 100644 index 0000000000..a175f2ff49 --- /dev/null +++ b/generator/check_model.cpp @@ -0,0 +1,37 @@ +#include "check_model.hpp" + +#include "../indexer/features_vector.hpp" + +#include "../defines.hpp" + + +namespace check_model +{ + class DoFullRead + { + public: + void operator() (FeatureType const & ft, uint32_t /*pos*/) + { + m2::RectD const r = ft.GetLimitRect(FeatureType::BEST_GEOMETRY); + CHECK(r.IsValid(), ()); + } + }; + + void ReadFeatures(string const & fName) + { + try + { + FilesContainerR cont(fName); + + feature::DataHeader header; + header.Load(cont.GetReader(HEADER_FILE_TAG)); + + FeaturesVector vec(cont, header); + vec.ForEachOffset(DoFullRead()); + } + catch (RootException const & e) + { + LOG(LERROR, ("Can't open or read file", fName)); + } + } +} diff --git a/generator/check_model.hpp b/generator/check_model.hpp new file mode 100644 index 0000000000..94158d23d6 --- /dev/null +++ b/generator/check_model.hpp @@ -0,0 +1,7 @@ +#pragma once +#include "../std/string.hpp" + +namespace check_model +{ + void ReadFeatures(string const & fName); +} diff --git a/generator/generator.pro b/generator/generator.pro index aa65d5dd8b..bfbac2598b 100644 --- a/generator/generator.pro +++ b/generator/generator.pro @@ -30,6 +30,7 @@ SOURCES += \ osm_decl.cpp \ coastlines_generator.cpp \ tesselator.cpp \ + check_model.cpp \ HEADERS += \ feature_merger.hpp \ @@ -57,3 +58,4 @@ HEADERS += \ osm_decl.hpp \ coastlines_generator.hpp \ tesselator.hpp \ + check_model.hpp \ diff --git a/generator/generator_tool/generator_tool.cpp b/generator/generator_tool/generator_tool.cpp index ae34fb6274..d7e08fb670 100644 --- a/generator/generator_tool/generator_tool.cpp +++ b/generator/generator_tool/generator_tool.cpp @@ -8,6 +8,7 @@ #include "../statistics.hpp" #include "../unpack_mwm.hpp" #include "../generate_info.hpp" +#include "../check_model.hpp" #include "../../indexer/drawing_rules.hpp" #include "../../indexer/classificator_loader.hpp" @@ -62,6 +63,7 @@ DEFINE_bool(dump_prefixes, false, "Prints statistics on feature's' name prefixes DEFINE_bool(dump_search_tokens, false, "Print statistics on search tokens."); DEFINE_bool(unpack_mwm, false, "Unpack each section of mwm into a separate file with name filePath.sectionName."); DEFINE_bool(generate_packed_borders, false, "Generate packed file with country polygons."); +DEFINE_bool(check_mwm, false, "Check map file to be correct."); DEFINE_string(delete_section, "", "Delete specified section (defines.hpp) from container."); @@ -128,7 +130,8 @@ int main(int argc, char ** argv) // load classificator only if necessary if (FLAGS_make_coasts || FLAGS_generate_features || FLAGS_generate_geometry || FLAGS_generate_index || FLAGS_generate_search_index || - FLAGS_calc_statistics || FLAGS_dump_types || FLAGS_dump_prefixes) + FLAGS_calc_statistics || FLAGS_dump_types || FLAGS_dump_prefixes || + FLAGS_check_mwm) { classificator::Load(); classif().SortClassificator(); @@ -271,5 +274,8 @@ int main(int argc, char ** argv) if (FLAGS_generate_packed_borders) borders::GeneratePackedBorders(path); + if (FLAGS_check_mwm) + check_model::ReadFeatures(datFile); + return 0; }