16#include <unordered_map>
52 return (
static_cast<size_t>(k.
tx) << 32) ^
static_cast<size_t>(k.
ty);
67 virtual std::unique_ptr<TileStorage>
clone()
const = 0;
83 std::unique_ptr<TileStorage>
clone()
const override;
94 std::unordered_map<TileKey, Array, TileKeyHash> tiles;
112 std::unique_ptr<TileStorage>
clone()
const override;
122 std::unordered_map<TileKey, LruTileEntry, TileKeyHash>
tiles;
139 std::unique_ptr<TileStorage>
clone()
const override;
143 void trim()
override;
149 std::filesystem::path root_dir;
151 std::filesystem::path tile_path(
const TileKey &key)
const;
165 std::unique_ptr<TileStorage>
clone()
const override;
170 void trim()
override;
173 return "DiskSequential";
177 std::filesystem::path root_dir;
179 std::optional<Array> current_tile;
181 Array load_or_create(
const TileRegion ®ion);
182 void save_tile(
const TileKey &key,
const Array &tile);
183 std::filesystem::path tile_path(
const TileKey &key)
const;
190std::unique_ptr<TileStorage>
make_storage(glm::ivec2 shape,
191 glm::ivec2 tile_shape,
Declaration of the Array class for 2D floating-point arrays with various mathematical operations and ...
Array class, helper to manipulate 2D float array with "(i, j)" indexing.
Definition array.hpp:32
Definition tile_storage.hpp:134
void on_evict(const TileKey &key, Array &tile) override
Definition disk_lru_storage.cpp:91
~DiskLruTileStorage()
Definition disk_lru_storage.cpp:18
void trim() override
Definition disk_lru_storage.cpp:109
size_t max_live_tiles() const override
Definition disk_lru_storage.cpp:86
Array & get_tile(const TileRegion ®ion) override
Definition disk_lru_storage.cpp:29
std::unique_ptr< TileStorage > clone() const override
Definition disk_lru_storage.cpp:24
Definition tile_storage.hpp:160
~DiskSequentialTileStorage() override
Definition disk_sequential_storage.cpp:17
void trim() override
Definition disk_sequential_storage.cpp:97
std::unique_ptr< TileStorage > clone() const override
Definition disk_sequential_storage.cpp:23
Array & get_tile(const TileRegion ®ion) override
Definition disk_sequential_storage.cpp:28
void release_tile(const TileRegion ®ion) override
Definition disk_sequential_storage.cpp:64
size_t max_live_tiles() const override
Definition disk_sequential_storage.cpp:59
DiskSequentialTileStorage()
Definition disk_sequential_storage.cpp:12
std::string info_string() const override
Definition tile_storage.hpp:171
Definition tile_storage.hpp:108
std::list< TileKey > lru
Definition tile_storage.hpp:121
size_t max_live_tiles() const override
Definition lru_tile_storage.cpp:72
std::string info_string() const override
Definition lru_tile_storage.cpp:67
std::unique_ptr< TileStorage > clone() const override
Definition lru_tile_storage.cpp:15
size_t max_tiles
Definition tile_storage.hpp:120
Array & get_tile_no_mutex_lock(const TileRegion ®ion)
Definition lru_tile_storage.cpp:26
void release_tile(const TileRegion ®ion) override
Definition lru_tile_storage.cpp:77
std::mutex mutex
Definition tile_storage.hpp:123
virtual void on_evict(const TileKey &key, Array &tile)
Definition lru_tile_storage.cpp:82
Array & get_tile(const TileRegion ®ion) override
Definition lru_tile_storage.cpp:20
std::unordered_map< TileKey, LruTileEntry, TileKeyHash > tiles
Definition tile_storage.hpp:122
Definition tile_storage.hpp:81
size_t max_live_tiles() const override
Definition ram_tile_storage.cpp:29
void release_tile(const TileRegion ®ion) override
Definition ram_tile_storage.cpp:34
std::string info_string() const override
Definition tile_storage.hpp:88
Array & get_tile(const TileRegion ®ion) override
Definition ram_tile_storage.cpp:18
std::unique_ptr< TileStorage > clone() const override
Definition ram_tile_storage.cpp:13
Definition tile_storage.hpp:61
virtual void trim()
Definition tile_storage.hpp:71
virtual ~TileStorage()=default
virtual std::string info_string() const =0
virtual void release_tile(const TileRegion ®ion)=0
virtual std::unique_ptr< TileStorage > clone() const =0
virtual size_t max_live_tiles() const =0
virtual Array & get_tile(const TileRegion ®ion)=0
Definition algebra.hpp:22
std::string to_string(StorageMode m)
Definition tile_storage.hpp:36
std::unique_ptr< TileStorage > make_storage(glm::ivec2 shape, glm::ivec2 tile_shape, StorageMode storage_mode)
Definition tile_storage.cpp:12
StorageMode
Definition tile_storage.hpp:29
@ VA_DISK_LRU_MIN
Definition tile_storage.hpp:32
@ VA_DISK_LRU
Definition tile_storage.hpp:31
@ VA_DISK_SEQUENTIAL
Definition tile_storage.hpp:33
@ VA_RAM
Definition tile_storage.hpp:30
Definition tile_storage.hpp:102
std::list< TileKey >::iterator lru_it
Definition tile_storage.hpp:104
Array value
Definition tile_storage.hpp:103
Definition tile_storage.hpp:49
size_t operator()(const TileKey &k) const
Definition tile_storage.hpp:50
Definition tile_region.hpp:22
int ty
Definition tile_region.hpp:24
int tx
Definition tile_region.hpp:23
Definition tile_region.hpp:38