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>2015-07-16 14:31:31 +0300
committerAlex Zolotarev <alex@maps.me>2015-09-23 02:57:12 +0300
commit8fdd97d52366659ec16cf4d4edf3ab98f96b0874 (patch)
tree1381c0061d93b5ee60b658df1659f3fa265312d0 /indexer/features_vector.cpp
parent0dc6675aa5d9cc8e19f1ec02a927eae826d97944 (diff)
Minor refactoring to store feature’s offsets table once for every cache value in mwm set.
Diffstat (limited to 'indexer/features_vector.cpp')
-rw-r--r--indexer/features_vector.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/indexer/features_vector.cpp b/indexer/features_vector.cpp
new file mode 100644
index 0000000000..a070f6286b
--- /dev/null
+++ b/indexer/features_vector.cpp
@@ -0,0 +1,41 @@
+#include "features_vector.hpp"
+#include "features_offsets_table.hpp"
+#include "mwm_version.hpp"
+#include "data_factory.hpp"
+
+
+void FeaturesVector::GetByIndex(uint32_t ind, FeatureType & ft) const
+{
+ uint32_t offset = 0, size = 0;
+ m_RecordReader.ReadRecord(m_table ? m_table->GetFeatureOffset(ind) : ind, m_buffer, offset, size);
+ ft.Deserialize(m_LoadInfo.GetLoader(), &m_buffer[offset]);
+}
+
+
+FeaturesVectorTest::FeaturesVectorTest(string const & filePath)
+ : m_cont(filePath), m_initializer(this), m_vector(m_cont, m_header, 0)
+{
+ Init();
+}
+
+FeaturesVectorTest::FeaturesVectorTest(FilesContainerR const & cont)
+ : m_cont(cont), m_initializer(this), m_vector(m_cont, m_header, 0)
+{
+ Init();
+}
+
+FeaturesVectorTest::Initializer::Initializer(FeaturesVectorTest * p)
+{
+ LoadMapHeader(p->m_cont, p->m_header);
+}
+
+void FeaturesVectorTest::Init()
+{
+ if (m_header.GetFormat() >= version::v5)
+ m_vector.m_table = feature::FeaturesOffsetsTable::CreateIfNotExistsAndLoad(m_cont).release();
+}
+
+FeaturesVectorTest::~FeaturesVectorTest()
+{
+ delete m_vector.m_table;
+}