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