blob: 64049e9a0cd29a9bfc7cc563ff87e710a63c3796 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#pragma once
#include "search/categories_set.hpp"
#include "search/cbv.hpp"
#include "indexer/mwm_set.hpp"
#include "base/cancellable.hpp"
#include "std/map.hpp"
namespace search
{
class MwmContext;
class CategoriesCache
{
public:
template <typename TypesSource>
CategoriesCache(TypesSource const & source, my::Cancellable const & cancellable)
: m_cancellable(cancellable)
{
source.ForEachType([this](uint32_t type) { m_categories.Add(type); });
}
virtual ~CategoriesCache() = default;
CBV Get(MwmContext const & context);
inline void Clear() { m_cache.clear(); }
private:
CBV Load(MwmContext const & context);
CategoriesSet m_categories;
my::Cancellable const & m_cancellable;
map<MwmSet::MwmId, CBV> m_cache;
};
class StreetsCache : public CategoriesCache
{
public:
StreetsCache(my::Cancellable const & cancellable);
};
class VillagesCache : public CategoriesCache
{
public:
VillagesCache(my::Cancellable const & cancellable);
};
class HotelsCache : public CategoriesCache
{
public:
HotelsCache(my::Cancellable const & cancellable);
};
} // namespace search
|