Krita Source Code Documentation
Loading...
Searching...
No Matches
KisTileHashTableIteratorTraits2< T > Class Template Reference

#include <kis_tile_hash_table2.h>

Public Types

typedef ConcurrentMap< quint32, TileType * >::Iterator Iterator
 
typedef T TileType
 
typedef KisSharedPtr< T > TileTypeSP
 

Public Member Functions

void deleteCurrent ()
 
bool isDone () const
 
 KisTileHashTableIteratorTraits2 (KisTileHashTableTraits2< T > *ht)
 
void moveCurrentToHashTable (KisTileHashTableTraits2< T > *newHashTable)
 
void next ()
 
TileTypeSP tile () const
 
 ~KisTileHashTableIteratorTraits2 ()
 

Private Attributes

KisTileHashTableTraits2< T > * m_ht
 
Iterator m_iter
 

Detailed Description

template<class T>
class KisTileHashTableIteratorTraits2< T >

This is a template for a hash table that stores tiles (or some other objects resembling tiles). Actually, this object should only have col()/row() methods and be able to answer notifyDetachedFromDataManager() requests to be stored here. It is used in KisTiledDataManager and KisMementoManager.

How to use: 1) each hash must be unique, otherwise tiles would rewrite each-other 2) 0 key is reserved, so can't be used 3) col and row must be less than 0x7FFF to guarantee uniqueness of hash for each pair

Definition at line 217 of file kis_tile_hash_table2.h.

Member Typedef Documentation

◆ Iterator

template<class T >
typedef ConcurrentMap<quint32,TileType*>::Iterator KisTileHashTableIteratorTraits2< T >::Iterator

Definition at line 222 of file kis_tile_hash_table2.h.

◆ TileType

template<class T >
typedef T KisTileHashTableIteratorTraits2< T >::TileType

Definition at line 220 of file kis_tile_hash_table2.h.

◆ TileTypeSP

template<class T >
typedef KisSharedPtr<T> KisTileHashTableIteratorTraits2< T >::TileTypeSP

Definition at line 221 of file kis_tile_hash_table2.h.

Constructor & Destructor Documentation

◆ KisTileHashTableIteratorTraits2()

Definition at line 224 of file kis_tile_hash_table2.h.

224 : m_ht(ht)
225 {
226 m_ht->m_iteratorLock.lockForWrite();
227 m_iter.setMap(m_ht->m_map);
228 }
KisTileHashTableTraits2< T > * m_ht

References KisTileHashTableIteratorTraits2< T >::m_ht, and KisTileHashTableIteratorTraits2< T >::m_iter.

◆ ~KisTileHashTableIteratorTraits2()

Definition at line 230 of file kis_tile_hash_table2.h.

231 {
232 m_ht->m_iteratorLock.unlock();
233 }

References KisTileHashTableIteratorTraits2< T >::m_ht.

Member Function Documentation

◆ deleteCurrent()

◆ isDone()

template<class T >
bool KisTileHashTableIteratorTraits2< T >::isDone ( ) const
inline

Definition at line 245 of file kis_tile_hash_table2.h.

246 {
247 return !m_iter.isValid();
248 }

References KisTileHashTableIteratorTraits2< T >::m_iter.

◆ moveCurrentToHashTable()

template<class T >
void KisTileHashTableIteratorTraits2< T >::moveCurrentToHashTable ( KisTileHashTableTraits2< T > * newHashTable)
inline

Definition at line 256 of file kis_tile_hash_table2.h.

257 {
258 TileTypeSP tile = m_iter.getValue();
259 next();
260
261 quint32 idx = m_ht->calculateHash(tile->col(), tile->row());
262 m_ht->erase(idx);
263 newHashTable->insert(idx, tile);
264 }
void insert(quint32 idx, TileTypeSP item)

References KisTileHashTableTraits2< T >::insert(), KisTileHashTableIteratorTraits2< T >::m_ht, KisTileHashTableIteratorTraits2< T >::m_iter, KisTileHashTableIteratorTraits2< T >::next(), and KisTileHashTableIteratorTraits2< T >::tile().

◆ next()

template<class T >
void KisTileHashTableIteratorTraits2< T >::next ( )
inline

Definition at line 235 of file kis_tile_hash_table2.h.

236 {
237 m_iter.next();
238 }

References KisTileHashTableIteratorTraits2< T >::m_iter.

◆ tile()

template<class T >
TileTypeSP KisTileHashTableIteratorTraits2< T >::tile ( ) const
inline

Definition at line 240 of file kis_tile_hash_table2.h.

241 {
242 return TileTypeSP(m_iter.getValue());
243 }

References KisTileHashTableIteratorTraits2< T >::m_iter.

Member Data Documentation

◆ m_ht

template<class T >
KisTileHashTableTraits2<T>* KisTileHashTableIteratorTraits2< T >::m_ht
private

Definition at line 267 of file kis_tile_hash_table2.h.

◆ m_iter

template<class T >
Iterator KisTileHashTableIteratorTraits2< T >::m_iter
private

Definition at line 268 of file kis_tile_hash_table2.h.


The documentation for this class was generated from the following file: