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:
authorvng <viktor.govako@gmail.com>2011-08-25 17:58:00 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:22:23 +0300
commita67f4c612fdf415b0c53e33e286730a103015b48 (patch)
tree99b32240c48b451b529fa0d205a6f542b3b867b5 /indexer/data_factory.cpp
parentd38ed958ee39924eab20ec47fa6e101146d62920 (diff)
Support old format 1.01 (April 2011).
Diffstat (limited to 'indexer/data_factory.cpp')
-rw-r--r--indexer/data_factory.cpp40
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();
}