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:
Diffstat (limited to 'search/rank_table_cache.cpp')
-rw-r--r--search/rank_table_cache.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/search/rank_table_cache.cpp b/search/rank_table_cache.cpp
new file mode 100644
index 0000000000..83b94f9b94
--- /dev/null
+++ b/search/rank_table_cache.cpp
@@ -0,0 +1,27 @@
+#include "search/rank_table_cache.hpp"
+
+#include "search/dummy_rank_table.hpp"
+
+#include "indexer/rank_table.hpp"
+
+namespace search
+{
+RankTable const & RankTableCache::Get(Index & index, TId const & mwmId)
+{
+ auto const it = m_ranks.find(TKey(mwmId));
+ if (it != m_ranks.end())
+ return *it->second;
+
+ TKey handle(index.GetMwmHandleById(mwmId));
+ auto table = RankTable::Load(handle.GetValue<MwmValue>()->m_cont);
+ if (!table)
+ table.reset(new DummyRankTable());
+
+ return *(m_ranks.emplace(move(handle), move(table)).first->second.get());
+}
+
+void RankTableCache::Remove(TId const & id) { m_ranks.erase(TKey(id)); }
+
+void RankTableCache::Clear() { m_ranks.clear(); }
+
+} // namespace search