Krita Source Code Documentation
Loading...
Searching...
No Matches
KisTileHashTableIteratorTraits< T, LockerType > Class Template Reference

#include <kis_tile_hash_table.h>

Public Types

typedef T TileType
 
typedef KisSharedPtr< T > TileTypeSP
 

Public Member Functions

template<class Helper = LockerType>
std::enable_if< std::is_same< Helper, QWriteLocker >::value, void >::type deleteCurrent ()
 
bool isDone () const
 
 KisTileHashTableIteratorTraits (KisTileHashTableTraits< T > *ht)
 
template<class Helper = LockerType>
std::enable_if< std::is_same< Helper, QWriteLocker >::value, void >::type moveCurrentToHashTable (KisTileHashTableTraits< T > *newHashTable)
 
void next ()
 
TileTypeSP tile () const
 
 ~KisTileHashTableIteratorTraits ()
 

Protected Member Functions

qint32 nextNonEmptyList (qint32 startIdx)
 

Protected Attributes

KisTileHashTableTraits< T > * m_hashTable
 
qint32 m_index
 
LockerType m_locker
 
TileTypeSP m_tile
 

Detailed Description

template<class T, class LockerType>
class KisTileHashTableIteratorTraits< T, LockerType >

Walks through all tiles inside hash table Note: You can't work with your hash table in a regular way during iterating with this iterator, because HT is locked. The only thing you can do is to delete current tile.

LockerType defines if the iterator is constant or mutable. One should pass either QReadLocker or QWriteLocker as a parameter.

Definition at line 132 of file kis_tile_hash_table.h.

Member Typedef Documentation

◆ TileType

template<class T , class LockerType >
typedef T KisTileHashTableIteratorTraits< T, LockerType >::TileType

Definition at line 135 of file kis_tile_hash_table.h.

◆ TileTypeSP

template<class T , class LockerType >
typedef KisSharedPtr<T> KisTileHashTableIteratorTraits< T, LockerType >::TileTypeSP

Definition at line 136 of file kis_tile_hash_table.h.

Constructor & Destructor Documentation

◆ KisTileHashTableIteratorTraits()

◆ ~KisTileHashTableIteratorTraits()

template<class T , class LockerType >
KisTileHashTableIteratorTraits< T, LockerType >::~KisTileHashTableIteratorTraits ( )
inline

Definition at line 147 of file kis_tile_hash_table.h.

147 {
148 }

Member Function Documentation

◆ deleteCurrent()

template<class T , class LockerType >
template<class Helper = LockerType>
std::enable_if< std::is_same< Helper, QWriteLocker >::value, void >::type KisTileHashTableIteratorTraits< T, LockerType >::deleteCurrent ( )
inline

◆ isDone()

template<class T , class LockerType >
bool KisTileHashTableIteratorTraits< T, LockerType >::isDone ( ) const
inline

Definition at line 170 of file kis_tile_hash_table.h.

170 {
171 return !m_tile;
172 }

References KisTileHashTableIteratorTraits< T, LockerType >::m_tile.

◆ moveCurrentToHashTable()

template<class T , class LockerType >
template<class Helper = LockerType>
std::enable_if< std::is_same< Helper, QWriteLocker >::value, void >::type KisTileHashTableIteratorTraits< T, LockerType >::moveCurrentToHashTable ( KisTileHashTableTraits< T > * newHashTable)
inline

◆ next()

template<class T , class LockerType >
void KisTileHashTableIteratorTraits< T, LockerType >::next ( )
inline

Definition at line 150 of file kis_tile_hash_table.h.

150 {
151 if (m_tile) {
152 m_tile = m_tile->next();
153 if (!m_tile) {
154 qint32 idx = nextNonEmptyList(m_index + 1);
156 m_index = idx;
157 m_tile = m_hashTable->m_hashTable[idx];
158 } else {
159 //EOList reached
160 m_index = -1;
161 // m_tile.clear(); // already null
162 }
163 }
164 }
165 }

References KisTileHashTableIteratorTraits< T, LockerType >::m_hashTable, KisTileHashTableIteratorTraits< T, LockerType >::m_index, KisTileHashTableIteratorTraits< T, LockerType >::m_tile, and KisTileHashTableIteratorTraits< T, LockerType >::nextNonEmptyList().

◆ nextNonEmptyList()

template<class T , class LockerType >
qint32 KisTileHashTableIteratorTraits< T, LockerType >::nextNonEmptyList ( qint32 startIdx)
inlineprotected

Definition at line 205 of file kis_tile_hash_table.h.

205 {
206 qint32 idx = startIdx;
207
209 !m_hashTable->m_hashTable[idx]) {
210 idx++;
211 }
212
213 return idx;
214 }

References KisTileHashTableTraits< T >::m_hashTable, and KisTileHashTableIteratorTraits< T, LockerType >::m_hashTable.

◆ tile()

template<class T , class LockerType >
TileTypeSP KisTileHashTableIteratorTraits< T, LockerType >::tile ( ) const
inline

Definition at line 167 of file kis_tile_hash_table.h.

167 {
168 return m_tile;
169 }

References KisTileHashTableIteratorTraits< T, LockerType >::m_tile.

Member Data Documentation

◆ m_hashTable

template<class T , class LockerType >
KisTileHashTableTraits<T>* KisTileHashTableIteratorTraits< T, LockerType >::m_hashTable
protected

Definition at line 201 of file kis_tile_hash_table.h.

◆ m_index

template<class T , class LockerType >
qint32 KisTileHashTableIteratorTraits< T, LockerType >::m_index
protected

Definition at line 200 of file kis_tile_hash_table.h.

◆ m_locker

template<class T , class LockerType >
LockerType KisTileHashTableIteratorTraits< T, LockerType >::m_locker
protected

Definition at line 202 of file kis_tile_hash_table.h.

◆ m_tile

template<class T , class LockerType >
TileTypeSP KisTileHashTableIteratorTraits< T, LockerType >::m_tile
protected

Definition at line 199 of file kis_tile_hash_table.h.


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