Mémoïsation par clé logique : charge au premier accès, retient aussi un échec, et s'invalide par clé ou entièrement.
More...
#include <CacheRegistry.h>
|
| template<typename Loader> |
| const Resource * | getOrLoad (const std::string &key, Loader &&loader) |
| | Obtient la ressource sous key, en la chargeant via loader au premier accès.
|
| void | invalidate (const std::string &key) |
| | Retire une entrée (succès ou échec mémorisé) : le prochain getOrLoad sous cette clé rappelle loader.
|
| void | invalidateAll () |
| | Retire toutes les entrées.
|
| std::size_t | size () const noexcept |
|
| std::unordered_map< std::string, std::optional< Resource > > | _entries |
template<typename Resource>
class hmi::CacheRegistry< Resource >
Mémoïsation par clé logique : charge au premier accès, retient aussi un échec, et s'invalide par clé ou entièrement.
Factorise la logique de bibliothèque de hmi::TextureCache (LOT-40) hors de tout détail Direct3D : c'est ce qui rend ce comportement — mémoïsation, mémorisation d'échec, invalidate/invalidateAll — vérifiable sans GPU (EX-NFR-004), avec n'importe quel type de ressource. TextureCache compose ce registre pour sa bibliothèque de textures ; ce fichier ne connaît rien de Direct3D ni de Qt.
Logique pure, aucune dépendance externe (EX-NFR-010).
- Template Parameters
-
| Resource | Type de ressource mémorisée par clé. |
◆ getOrLoad()
template<typename Resource>
template<typename Loader>
| const Resource * hmi::CacheRegistry< Resource >::getOrLoad |
( |
const std::string & | key, |
|
|
Loader && | loader ) |
|
inlinenodiscard |
Obtient la ressource sous key, en la chargeant via loader au premier accès.
Un chargement en échec (loader() renvoyant std::nullopt) est mémorisé comme une entrée à std::nullopt : les accès suivants ne rappellent pas loader tant que la clé n'est pas invalidée — sans cela, un asset manquant relirait le disque à chaque image.
- Parameters
-
| key | Clé logique. |
| loader | Fonction sans argument, appelée uniquement si key n'est pas déjà en cache ; renvoie std::optional<Resource>. |
- Returns
- Pointeur vers la ressource en cache, ou nullptr si le chargement (courant ou déjà mémorisé) a échoué.
◆ invalidate()
template<typename Resource>
Retire une entrée (succès ou échec mémorisé) : le prochain getOrLoad sous cette clé rappelle loader.
◆ invalidateAll()
template<typename Resource>
Retire toutes les entrées.
◆ size()
template<typename Resource>
- Returns
- Le nombre d'entrées mémorisées (succès et échecs).
◆ _entries
template<typename Resource>
| std::unordered_map<std::string, std::optional<Resource> > hmi::CacheRegistry< Resource >::_entries |
|
private |
The documentation for this class was generated from the following file:
- /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Graphics/CacheRegistry.h