1 #pragma once
2 
3 #include <mbgl/tile/tile_id.hpp>
4 
5 #include <list>
6 #include <memory>
7 #include <map>
8 
9 namespace mbgl {
10 
11 class Tile;
12 
13 class TileCache {
14 public:
TileCache(size_t size_=0)15     TileCache(size_t size_ = 0) : size(size_) {}
16 
17     void setSize(size_t);
getSize() const18     size_t getSize() const { return size; };
19     void add(const OverscaledTileID& key, std::unique_ptr<Tile> data);
20     std::unique_ptr<Tile> pop(const OverscaledTileID& key);
21     Tile* get(const OverscaledTileID& key);
22     bool has(const OverscaledTileID& key);
23     void clear();
24 
25 private:
26     std::map<OverscaledTileID, std::unique_ptr<Tile>> tiles;
27     std::list<OverscaledTileID> orderedKeys;
28 
29     size_t size;
30 };
31 
32 } // namespace mbgl
33