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/index.hpp
parent0dc6675aa5d9cc8e19f1ec02a927eae826d97944 (diff)
Minor refactoring to store feature’s offsets table once for every cache value in mwm set.
Diffstat (limited to 'indexer/index.hpp')
-rw-r--r--indexer/index.hpp27
1 files changed, 19 insertions, 8 deletions
diff --git a/indexer/index.hpp b/indexer/index.hpp
index 7eae88fe9b..2c390db385 100644
--- a/indexer/index.hpp
+++ b/indexer/index.hpp
@@ -2,6 +2,7 @@
#include "indexer/cell_id.hpp"
#include "indexer/data_factory.hpp"
#include "indexer/feature_covering.hpp"
+#include "indexer/features_offsets_table.hpp"
#include "indexer/features_vector.hpp"
#include "indexer/mwm_set.hpp"
#include "indexer/scale_index.hpp"
@@ -16,18 +17,26 @@
#include "std/algorithm.hpp"
#include "std/limits.hpp"
-#include "std/unordered_set.hpp"
#include "std/utility.hpp"
#include "std/vector.hpp"
+
+class MwmInfoEx : public MwmInfo
+{
+public:
+ unique_ptr<feature::FeaturesOffsetsTable> m_table;
+};
+
class MwmValue : public MwmSet::MwmValueBase
{
public:
FilesContainerR m_cont;
IndexFactory m_factory;
platform::CountryFile const m_countryFile;
+ feature::FeaturesOffsetsTable const * m_table;
explicit MwmValue(platform::LocalCountryFile const & localFile);
+ void SetTable(MwmInfoEx & info);
inline feature::DataHeader const & GetHeader() const { return m_factory.GetHeader(); }
inline version::MwmVersion const & GetMwmVersion() const { return m_factory.GetMwmVersion(); }
@@ -38,10 +47,14 @@ public:
class Index : public MwmSet
{
protected:
- // MwmSet overrides:
- bool GetVersion(platform::LocalCountryFile const & localFile, MwmInfo & info) const override;
- TMwmValueBasePtr CreateValue(platform::LocalCountryFile const & localFile) const override;
+ /// @name MwmSet overrides.
+ //@{
+ MwmInfoEx * CreateInfo(platform::LocalCountryFile const & localFile) const override;
+
+ MwmValue * CreateValue(MwmInfo & info) const override;
+
void OnMwmDeregistered(platform::LocalCountryFile const & localFile) override;
+ //@}
public:
/// An Observer interface to MwmSet. Note that these functions can
@@ -61,8 +74,6 @@ public:
virtual void OnMapDeregistered(platform::LocalCountryFile const & localFile) {}
};
- Index() = default;
- ~Index() override = default;
/// Registers a new map.
WARN_UNUSED_RESULT pair<MwmHandle, RegResult> RegisterMap(
@@ -104,7 +115,7 @@ private:
covering::IntervalsT const & interval = cov.Get(lastScale);
// prepare features reading
- FeaturesVector fv(pValue->m_cont, header);
+ FeaturesVector fv(pValue->m_cont, header, pValue->m_table);
ScaleIndex<ModelReaderPtr> index(pValue->m_cont.GetReader(INDEX_FILE_TAG),
pValue->m_factory);
@@ -254,7 +265,7 @@ private:
MwmValue * const pValue = handle.GetValue<MwmValue>();
if (pValue)
{
- FeaturesVector featureReader(pValue->m_cont, pValue->GetHeader());
+ FeaturesVector featureReader(pValue->m_cont, pValue->GetHeader(), pValue->m_table);
while (result < features.size() && id == features[result].m_mwmId)
{
FeatureID const & featureId = features[result];