JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
hmi::CacheRegistry< Resource > Class Template Reference

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>

Public Member Functions

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

Private Attributes

std::unordered_map< std::string, std::optional< Resource > > _entries

Detailed Description

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
ResourceType de ressource mémorisée par clé.

Member Function Documentation

◆ 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
keyClé logique.
loaderFonction 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>
void hmi::CacheRegistry< Resource >::invalidate ( const std::string & key)
inline

Retire une entrée (succès ou échec mémorisé) : le prochain getOrLoad sous cette clé rappelle loader.

◆ invalidateAll()

template<typename Resource>
void hmi::CacheRegistry< Resource >::invalidateAll ( )
inline

Retire toutes les entrées.

◆ size()

template<typename Resource>
std::size_t hmi::CacheRegistry< Resource >::size ( ) const
inlinenodiscardnoexcept
Returns
Le nombre d'entrées mémorisées (succès et échecs).

Member Data Documentation

◆ _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