Krita Source Code Documentation
Loading...
Searching...
No Matches
KisTileDataStoreIterator Class Reference

#include <kis_tile_data_store_iterators.h>

+ Inheritance diagram for KisTileDataStoreIterator:

Public Member Functions

bool hasNext () const
 
 KisTileDataStoreIterator (ConcurrentMap< int, KisTileData * > &map, KisTileDataStore *store)
 
KisTileDatanext ()
 
KisTileDatapeekNext ()
 
bool trySwapOut (KisTileData *td)
 

Private Attributes

ConcurrentMap< int, KisTileData * >::Iterator m_iterator
 
ConcurrentMap< int, KisTileData * > & m_map
 
KisTileDataStorem_store
 

Detailed Description

KisTileDataStoreIterator, KisTileDataStoreReverseIterator, KisTileDataStoreClockIterator

  • are general iterators for the contents of KisTileDataStore. The store starts holding a lock when returns one of such iterators, so no one will be able to change the list while you are iterating.

But be careful! You can't change the list while iterating either, because it can invalidate the iterator. This is a general rule.

Definition at line 28 of file kis_tile_data_store_iterators.h.

Constructor & Destructor Documentation

◆ KisTileDataStoreIterator()

KisTileDataStoreIterator::KisTileDataStoreIterator ( ConcurrentMap< int, KisTileData * > & map,
KisTileDataStore * store )
inline

Definition at line 31 of file kis_tile_data_store_iterators.h.

32 : m_map(map),
33 m_store(store)
34 {
35 m_iterator.setMap(m_map);
36 }
ConcurrentMap< int, KisTileData * >::Iterator m_iterator
ConcurrentMap< int, KisTileData * > & m_map

References m_iterator, and m_map.

Member Function Documentation

◆ hasNext()

bool KisTileDataStoreIterator::hasNext ( ) const
inline

Definition at line 50 of file kis_tile_data_store_iterators.h.

51 {
52 return m_iterator.isValid();
53 }

References m_iterator.

◆ next()

KisTileData * KisTileDataStoreIterator::next ( )
inline

Definition at line 43 of file kis_tile_data_store_iterators.h.

44 {
45 KisTileData *current = m_iterator.getValue();
46 m_iterator.next();
47 return current;
48 }

References m_iterator.

◆ peekNext()

KisTileData * KisTileDataStoreIterator::peekNext ( )
inline

Definition at line 38 of file kis_tile_data_store_iterators.h.

39 {
40 return m_iterator.getValue();
41 }

References m_iterator.

◆ trySwapOut()

bool KisTileDataStoreIterator::trySwapOut ( KisTileData * td)
inline

Definition at line 55 of file kis_tile_data_store_iterators.h.

56 {
57 if (td == m_iterator.getValue()) {
58 m_iterator.next();
59 }
60
61 return m_store->trySwapTileData(td);
62 }
bool trySwapTileData(KisTileData *td)

References m_iterator, m_store, and KisTileDataStore::trySwapTileData().

Member Data Documentation

◆ m_iterator

ConcurrentMap<int,KisTileData*>::Iterator KisTileDataStoreIterator::m_iterator
private

Definition at line 66 of file kis_tile_data_store_iterators.h.

◆ m_map

ConcurrentMap<int, KisTileData*>& KisTileDataStoreIterator::m_map
private

Definition at line 65 of file kis_tile_data_store_iterators.h.

◆ m_store

KisTileDataStore* KisTileDataStoreIterator::m_store
private

Definition at line 67 of file kis_tile_data_store_iterators.h.


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