diff options
author | vng <viktor.govako@gmail.com> | 2011-08-25 17:58:00 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 01:22:23 +0300 |
commit | a67f4c612fdf415b0c53e33e286730a103015b48 (patch) | |
tree | 99b32240c48b451b529fa0d205a6f542b3b867b5 /indexer/data_factory.cpp | |
parent | d38ed958ee39924eab20ec47fa6e101146d62920 (diff) |
Support old format 1.01 (April 2011).
Diffstat (limited to 'indexer/data_factory.cpp')
-rw-r--r-- | indexer/data_factory.cpp | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/indexer/data_factory.cpp b/indexer/data_factory.cpp index 1358c82f8d..73509ff2f1 100644 --- a/indexer/data_factory.cpp +++ b/indexer/data_factory.cpp @@ -2,6 +2,7 @@ #include "data_factory.hpp" #include "interval_index.hpp" +#include "old/interval_index_101.hpp" #include "../defines.hpp" @@ -11,12 +12,47 @@ #include "../base/start_mem_debug.hpp" +namespace +{ + void LoadHeader(FilesContainerR const & cont, feature::DataHeader & header) + { + ModelReaderPtr r = cont.GetReader(HEADER_FILE_TAG); + + if (cont.IsReaderExist(VERSION_FILE_TAG)) + header.Load(r); + else + header.LoadVer1(r); + } +} + void IndexFactory::Load(FilesContainerR const & cont) { - m_header.Load(cont.GetReader(HEADER_FILE_TAG)); + LoadHeader(cont, m_header); } IntervalIndexIFace * IndexFactory::CreateIndex(ModelReaderPtr reader) { - return new IntervalIndex<ModelReaderPtr>(reader); + using namespace feature; + + IntervalIndexIFace * p; + + switch (m_header.GetVersion()) + { + case DataHeader::v1: + p = new old_101::IntervalIndex<uint32_t, ModelReaderPtr>(reader); + break; + + default: + p = new IntervalIndex<ModelReaderPtr>(reader);; + break; + } + + return p; +} + +m2::RectD GetMapBounds(FilesContainerR const & cont) +{ + feature::DataHeader header; + LoadHeader(cont, header); + return header.GetBounds(); } |