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.hpp')
-rw-r--r--search/rank_table_cache.hpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/search/rank_table_cache.hpp b/search/rank_table_cache.hpp
new file mode 100644
index 0000000000..2332a3a3c1
--- /dev/null
+++ b/search/rank_table_cache.hpp
@@ -0,0 +1,46 @@
+#pragma once
+
+#include "indexer/index.hpp"
+
+#include "base/macros.hpp"
+
+#include "std/map.hpp"
+#include "std/unique_ptr.hpp"
+
+namespace search
+{
+class RankTable;
+
+class RankTableCache
+{
+ using TId = MwmSet::MwmId;
+
+ struct TKey : public MwmSet::MwmHandle
+ {
+ TKey() = default;
+ TKey(TKey &&) = default;
+
+ explicit TKey(TId const & id) { this->m_mwmId = id; }
+ explicit TKey(MwmSet::MwmHandle && handle) : MwmSet::MwmHandle(move(handle)) {}
+ };
+
+public:
+ RankTableCache() = default;
+
+ RankTable const & Get(Index & index, TId const & mwmId);
+
+ void Remove(TId const & id);
+ void Clear();
+
+private:
+ struct Compare
+ {
+ bool operator()(TKey const & r1, TKey const & r2) const { return (r1.GetId() < r2.GetId()); }
+ };
+
+ map<TKey, unique_ptr<RankTable>, Compare> m_ranks;
+
+ DISALLOW_COPY_AND_MOVE(RankTableCache);
+};
+
+} // namespace search