===== QCache ===== La classe QCache est un modèle qui fournit un cache. [[#Description détaillée|Plus d'informations...]] ==== Description détaillée ==== La classe QCache est un modèle qui fournit un cache. ''QCache'' définit un cache qui stocke des objets de type ''T'', associés à des clés de type ''Cle''. Par exemple, voici la définition d'un cache qui stocke des objets de type ''Employe'', associés à une clé entière. QCache cache; Voici la manière d'insérer un objet dans le cache. Employe *employe = new Employe; employe->setId(37); employe->setName("Richard Schmit"); ... cache.insert(employe->id(), employe); L'avantage de l'utilisation de cette classe par rapport aux structures basées sur des clés (comme [[QMap]] ou [[QHash]]) est que QCache prend possession automatiquement des objets qui y sont insérés et les supprime pour faire de la place, si nécessaire. À l'insertion d'un objet dans le cache, vous pouvez spécifier un coût, ce qui devrait avoir un lien avec la quantité de mémoire utilisée par l'objet. Quand la somme des coûts de tous les objets ([[doc:4.6:qcache#totalCost()|totalCost()]]) excède la limite du cache ([[qcache#maxCost()]]), QCache commence à supprimer des objets dans le cache pour rester en dessous de la limite, en commençant par les objets les moins utilisés. Par défaut, [[doc:4.6:qcache#maxCost()|maxCost()]] vaut 100. Vous pouvez spécifier une valeur différente dans le constructeur. QCache cache(5000); À chaque appel de [[doc:4.6:qcache#insert()|insert()]], vous pouvez spécifier un coût en troisième argument (après la clé et un pointeur vers l'objet à insérer). Après l'appel, l'objet inséré appartiendra à QCache, qui pourra le supprimer à tout moment. Pour regarder les objets dans le cache, utilisez [[doc:4.6:qcache#object()|object()]] ou [[doc:4.6:qcache#operator[]()|operator[]()]]. Cette fonction permet de retrouver un objet par sa clé et retourne, soit un pointeur vers l'objet en cache (détenu par lui) soit 0. Si vous voulez supprimer un objet du cache, appelez [[doc:4.6:qcache#remove()|remove()]]. Ceci supprimera aussi l'objet. Si vous voulez supprimer un objet du cache sans qu'il soit supprimé, appelez [[doc:4.6:qcache#take()|take()]]. Voir aussi [[QPixmapCache]], [[QHash]] et [[QMap]]. ==== Fonctions membres ==== === QCache() === ''QCache::QCache ( int maxCost = 100 )'' Construit un cache dont le contenu ne dépassera jamais un coût plus grand que ''maxCost''. === ~QCache() === ''QCache::~QCache ()'' Détruit le cache, ainsi que tous les objets du cache. === clear() === ''void QCache::clear ()'' Supprime tous les objets dans le cache. Voir aussi [[doc:4.6:qcache#remove()|remove()]] et [[doc:4.6:qcache#take()|take()]]. === contains() === ''bool QCache::contains ( const Key & key ) const'' Retourne ''true'' si le cache contient un objet associé avec la clé ''key'' ; sinon, retourne false. Voir aussi [[#take()]] et [[#remove()]]. === count() === ''int QCache::count () const'' Comme [[doc:4.6:qcache#size()|size()]]. === insert() === ''bool QCache::insert ( const Key & key, T * object, int cost= 1 )'' Insère ''object'' dans le cache avec la clé ''key'' et le coût ''cost''. Tout objet ayant la même clé dans le cache sera supprimé. Après cet appel, ''object'' est propriété de [[QCache]] et peut être supprimé à n'importe quel moment. En particulier, si ''cost'' est supérieur à [[#maxCost()]], l'objet sera supprimé immédiatement. Cette fonction retourne ''true'' si l'objet a été inséré dans le cache, sinon elle retourne false. Voir aussi [[#take()]] et [[#remove()]]. === isEmpty === ''bool QCache::isEmpty () const'' Retourne ''true'' si le cache ne contient aucun objet, ''false'' sinon. Voir aussi [[#size()]]. === keys() === ''[[QList]] QCache::keys () const'' Retourne une liste des clés du cache. === maxCost() === ''int QCache::maxCost () const'' Retourne le coût maximal autorisé dans le cache. Voir aussi [[doc:4.6:qcache#setMaxCost()|setMaxCost()]] et [[doc:4.6:qcache#totalCost()|totalCost()]]. === object() === ''T * QCache::object ( const Key & key) const'' Retourne l'objet associé à la clé ''key'' ou 0 si la clé n'existe pas dans le cache. **Attention :** L'objet retourné est possédé par [[QCache]] et peut être supprimé à n'importe quel moment. Voir aussi [[#take()]] et [[#remove()]]. === remove() === ''bool QCache::remove ( const Key & key)'' Supprime l'objet associé à la clé ''key''. Retourne ''true'' si l'objet a été trouvé dans le cache ; sinon, false. Voir aussi [[#take()]] et [[#clear()]]. === setMaxCost() === ''void QCache::setMaxCost ( int cost)'' Autorise un coût maximal de ''cost''. Si le coût total actuel est plus grand que ''cost'' nouvellement autorisé, des objets seront supprimés automatiquement. Voir aussi [[#maxCost()]] et [[#totalCost()]]. === size() === ''int QCache::size () const'' Retourne le nombre d'objets dans le cache. Voir aussi [[doc:4.6:qcache#isEmpty()|isEmpty()]]. === take() === ''T * QCache::take ( const Key & key)'' Prend l'objet associé à la clé ''key'' hors du cache sans le supprimer. Retourne un pointeur vers cet objet ou 0 si la clé n'existe pas dans le cache. La propriété de l'objet retourné est passée à l'appelant. Voir aussi [[#remove()]]. === totalCost() === ''int QCache::totalCost () const'' Retourne le coût total des objets dans le cache. Cette valeur est normalement inférieure à [[#maxCost()]], mais [[QCache]] fait une exception pour les classes [[partage_implicite]|implicitement partagées]] de Qt. Si un objet caché partage ses données internes avec une autre instance, [[QCache]] peut garder l'objet, en rendant possiblement totalCost() plus grand que [[#maxCost()]]. Voir aussi [[#setMaxCost()]]. === operator[]() === ''T * QCache::operator[] ( const Key & key) const'' Retourne un objet associé à la clé ''key'' ou 0 si la clé n'existe pas dans le cache. Ceci équivaut à [[#object()]]. **Attention :** L'objet retourné est possédé par [[QCache]] et peut être supprimé à tout moment. ==== Remerciements ==== Merci à pour la traduction et à pour la relecture !