Lines Matching defs:iterator

35 	// delete all iterator lists (there shouldn't be any, though)
51 // allocate iterator map
64 QueryManager::AddIterator(QueryIterator* iterator)
66 if (!iterator || !iterator->GetVolume())
71 // get the iterator list for the volume
72 vnode_id nodeID = iterator->GetVolume()->GetRootID();
88 // add the iterator
89 iteratorList->Insert(iterator);
91 // get a volume reference for the iterator
92 iterator->GetVolume()->AcquireReference();
99 QueryManager::AddSubIterator(HierarchicalQueryIterator* iterator,
102 if (!iterator || !subIterator)
109 iterator->AddSubIterator(subIterator);
116 QueryManager::RemoveSubIterator(HierarchicalQueryIterator* iterator,
119 if (!iterator || !subIterator)
123 if (subIterator->GetParentIterator() != iterator)
126 iterator->RemoveSubIterator(subIterator);
133 QueryManager::GetCurrentSubIterator(HierarchicalQueryIterator* iterator)
135 if (!iterator)
139 QueryIterator* subIterator = iterator->GetCurrentSubIterator();
147 QueryManager::NextSubIterator(HierarchicalQueryIterator* iterator,
150 if (iterator) {
152 if (iterator->GetCurrentSubIterator() == subIterator)
153 iterator->NextSubIterator();
159 QueryManager::RewindSubIterator(HierarchicalQueryIterator* iterator)
161 if (iterator) {
163 iterator->RewindSubIterator();
169 QueryManager::PutIterator(QueryIterator* iterator)
171 if (!iterator)
175 if (iterator->ReleaseReference()) {
176 // last reference removed: remove the iterator
181 = dynamic_cast<HierarchicalQueryIterator*>(iterator)) {
185 // remove from the parent iterator
187 = iterator->GetParentIterator();
189 parentIterator->RemoveSubIterator(iterator);
192 vnode_id nodeID = iterator->GetVolume()->GetRootID();
195 iteratorList->Remove(iterator);
203 ERROR("QueryManager::PutIterator(): ERROR: No iterator list "
204 "for volume %p!\n", iterator->GetVolume());
207 // free the iterator and surrender its volume reference
208 Volume* volume = iterator->GetVolume();
210 volume->FreeQueryIterator(iterator);
238 QueryIterator* iterator = iteratorList->First();
239 while (iterator) {
240 QueryIterator* nextIterator = iteratorList->GetNext(iterator);
242 if (iterator->GetParentIterator()) {
245 = dynamic_cast<HierarchicalQueryIterator*>(iterator)) {
250 iterator->GetParentIterator()->RemoveSubIterator(iterator);
253 if (iterator->ReleaseReference()) {
255 iteratorList->Remove(iterator);
256 iterators.Insert(iterator);
260 iterator = nextIterator;
272 while (QueryIterator* iterator = iterators.First()) {
273 iterators.Remove(iterator);
274 volume->FreeQueryIterator(iterator);