20#include <unordered_map>
53 return (
static_cast<size_t>(k.
tx) << 32) ^
static_cast<size_t>(k.
ty);
68 virtual std::unique_ptr<TileStorage>
clone()
const = 0;
84 std::unique_ptr<TileStorage>
clone()
const override;
95 std::unordered_map<TileKey, Array, TileKeyHash> tiles;
113 std::unique_ptr<TileStorage>
clone()
const override;
123 std::unordered_map<TileKey, LruTileEntry, TileKeyHash>
tiles;
140 std::unique_ptr<TileStorage>
clone()
const override;
144 void trim()
override;
150 std::filesystem::path root_dir;
152 std::filesystem::path tile_path(
const TileKey &key)
const;
166 std::unique_ptr<TileStorage>
clone()
const override;
171 void trim()
override;
174 return "DiskSequential";
178 std::filesystem::path root_dir;
180 std::optional<Array> current_tile;
182 Array load_or_create(
const TileRegion ®ion);
183 void save_tile(
const TileKey &key,
const Array &tile);
184 std::filesystem::path tile_path(
const TileKey &key)
const;
191std::unique_ptr<TileStorage>
make_storage(glm::ivec2 shape,
192 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:135
void on_evict(const TileKey &key, Array &tile) override
Definition disk_lru_storage.cpp:105
~DiskLruTileStorage()
Definition disk_lru_storage.cpp:32
void trim() override
Definition disk_lru_storage.cpp:123
size_t max_live_tiles() const override
Definition disk_lru_storage.cpp:100
Array & get_tile(const TileRegion ®ion) override
Definition disk_lru_storage.cpp:43
std::unique_ptr< TileStorage > clone() const override
Definition disk_lru_storage.cpp:38
Definition tile_storage.hpp:161
~DiskSequentialTileStorage() override
Definition disk_sequential_storage.cpp:29
void trim() override
Definition disk_sequential_storage.cpp:109
std::unique_ptr< TileStorage > clone() const override
Definition disk_sequential_storage.cpp:35
Array & get_tile(const TileRegion ®ion) override
Definition disk_sequential_storage.cpp:40
void release_tile(const TileRegion ®ion) override
Definition disk_sequential_storage.cpp:76
size_t max_live_tiles() const override
Definition disk_sequential_storage.cpp:71
DiskSequentialTileStorage()
Definition disk_sequential_storage.cpp:24
std::string info_string() const override
Definition tile_storage.hpp:172
Definition tile_storage.hpp:109
std::list< TileKey > lru
Definition tile_storage.hpp:122
size_t max_live_tiles() const override
Definition lru_tile_storage.cpp:81
std::string info_string() const override
Definition lru_tile_storage.cpp:76
std::unique_ptr< TileStorage > clone() const override
Definition lru_tile_storage.cpp:24
size_t max_tiles
Definition tile_storage.hpp:121
Array & get_tile_no_mutex_lock(const TileRegion ®ion)
Definition lru_tile_storage.cpp:35
void release_tile(const TileRegion ®ion) override
Definition lru_tile_storage.cpp:86
std::mutex mutex
Definition tile_storage.hpp:124
virtual void on_evict(const TileKey &key, Array &tile)
Definition lru_tile_storage.cpp:91
Array & get_tile(const TileRegion ®ion) override
Definition lru_tile_storage.cpp:29
std::unordered_map< TileKey, LruTileEntry, TileKeyHash > tiles
Definition tile_storage.hpp:123
Definition tile_storage.hpp:82
size_t max_live_tiles() const override
Definition ram_tile_storage.cpp:34
void release_tile(const TileRegion ®ion) override
Definition ram_tile_storage.cpp:39
std::string info_string() const override
Definition tile_storage.hpp:89
Array & get_tile(const TileRegion ®ion) override
Definition ram_tile_storage.cpp:23
std::unique_ptr< TileStorage > clone() const override
Definition ram_tile_storage.cpp:18
Definition tile_storage.hpp:62
virtual void trim()
Definition tile_storage.hpp:72
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:23
std::string to_string(StorageMode m)
Definition tile_storage.hpp:37
std::unique_ptr< TileStorage > make_storage(glm::ivec2 shape, glm::ivec2 tile_shape, StorageMode storage_mode)
Definition tile_storage.cpp:14
StorageMode
Definition tile_storage.hpp:30
@ VA_DISK_LRU_MIN
Definition tile_storage.hpp:33
@ VA_DISK_LRU
Definition tile_storage.hpp:32
@ VA_DISK_SEQUENTIAL
Definition tile_storage.hpp:34
@ VA_RAM
Definition tile_storage.hpp:31
Definition tile_storage.hpp:103
std::list< TileKey >::iterator lru_it
Definition tile_storage.hpp:105
Array value
Definition tile_storage.hpp:104
Definition tile_storage.hpp:50
size_t operator()(const TileKey &k) const
Definition tile_storage.hpp:51
Definition tile_region.hpp:22
int ty
Definition tile_region.hpp:24
int tx
Definition tile_region.hpp:23
Definition tile_region.hpp:38