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

#include <kis_tile_data_store_iterators.h>

Public Member Functions

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

Private Member Functions

int getFinalPosition ()
 

Private Attributes

bool m_endReached
 
int m_finalPosition
 
ConcurrentMap< int, KisTileData * >::Iterator m_iterator
 
ConcurrentMap< int, KisTileData * > & m_map
 
KisTileDatam_startItem
 
KisTileDataStorem_store
 

Friends

class KisTileDataStore
 

Detailed Description

Definition at line 79 of file kis_tile_data_store_iterators.h.

Constructor & Destructor Documentation

◆ KisTileDataStoreClockIterator()

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

Definition at line 82 of file kis_tile_data_store_iterators.h.

85 : m_map(map),
86 m_store(store)
87 {
88 m_iterator.setMap(m_map);
89 m_finalPosition = m_iterator.getValue()->m_tileNumber;
90 m_startItem = m_map.get(startIndex);
91
92 if (m_iterator.getValue() == m_startItem || !m_startItem) {
93 m_startItem = 0;
94 m_endReached = true;
95 } else {
96 while (m_iterator.getValue() != m_startItem) {
97 m_iterator.next();
98 }
99 m_endReached = false;
100 }
101 }
Value get(Key key)
ConcurrentMap< int, KisTileData * > & m_map
ConcurrentMap< int, KisTileData * >::Iterator m_iterator

References ConcurrentMap< K, V, KT, VT >::get(), m_endReached, m_finalPosition, m_iterator, m_map, and m_startItem.

Member Function Documentation

◆ getFinalPosition()

int KisTileDataStoreClockIterator::getFinalPosition ( )
inlineprivate

Definition at line 141 of file kis_tile_data_store_iterators.h.

142 {
143 if (!m_iterator.isValid()) {
144 return m_finalPosition;
145 }
146
147 return m_iterator.getValue()->m_tileNumber;
148 }

References m_finalPosition, and m_iterator.

◆ hasNext()

bool KisTileDataStoreClockIterator::hasNext ( ) const
inline

Definition at line 125 of file kis_tile_data_store_iterators.h.

126 {
127 return !(m_endReached && m_iterator.getValue() == m_startItem);
128 }

References m_endReached, m_iterator, and m_startItem.

◆ next()

KisTileData * KisTileDataStoreClockIterator::next ( )
inline

Definition at line 113 of file kis_tile_data_store_iterators.h.

114 {
115 if (!m_iterator.isValid()) {
116 m_iterator.setMap(m_map);
117 m_endReached = true;
118 }
119
120 KisTileData *current = m_iterator.getValue();
121 m_iterator.next();
122 return current;
123 }

References m_endReached, m_iterator, and m_map.

◆ peekNext()

KisTileData * KisTileDataStoreClockIterator::peekNext ( )
inline

Definition at line 103 of file kis_tile_data_store_iterators.h.

104 {
105 if (!m_iterator.isValid()) {
106 m_iterator.setMap(m_map);
107 m_endReached = true;
108 }
109
110 return m_iterator.getValue();
111 }

References m_endReached, m_iterator, and m_map.

◆ trySwapOut()

bool KisTileDataStoreClockIterator::trySwapOut ( KisTileData * td)
inline

Definition at line 130 of file kis_tile_data_store_iterators.h.

131 {
132 if (td == m_iterator.getValue()) {
133 m_iterator.next();
134 }
135
136 return m_store->trySwapTileData(td);
137 }
bool trySwapTileData(KisTileData *td)

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

Friends And Related Symbol Documentation

◆ KisTileDataStore

friend class KisTileDataStore
friend

Definition at line 140 of file kis_tile_data_store_iterators.h.

Member Data Documentation

◆ m_endReached

bool KisTileDataStoreClockIterator::m_endReached
private

Definition at line 154 of file kis_tile_data_store_iterators.h.

◆ m_finalPosition

int KisTileDataStoreClockIterator::m_finalPosition
private

Definition at line 156 of file kis_tile_data_store_iterators.h.

◆ m_iterator

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

Definition at line 152 of file kis_tile_data_store_iterators.h.

◆ m_map

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

Definition at line 151 of file kis_tile_data_store_iterators.h.

◆ m_startItem

KisTileData* KisTileDataStoreClockIterator::m_startItem
private

Definition at line 153 of file kis_tile_data_store_iterators.h.

◆ m_store

KisTileDataStore* KisTileDataStoreClockIterator::m_store
private

Definition at line 155 of file kis_tile_data_store_iterators.h.


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