void nsFilteredContentIterator::Prev() { if (mIsOutOfRange || !mCurrentIterator) { NS_ASSERTION(mCurrentIterator, "Missing iterator!"); return; } // If we are switching directions then // we need to switch how we process the nodes if (mDirection != eBackward) { nsresult rv = SwitchDirections(false); if (NS_FAILED(rv)) { return; } } mCurrentIterator->Prev(); if (mCurrentIterator->IsDone()) { return; } // If we can't get the current node then // don't check to see if we can skip it nsINode *currentNode = mCurrentIterator->GetCurrentNode(); nsCOMPtr<nsIDOMNode> node(do_QueryInterface(currentNode)); CheckAdvNode(node, mDidSkip, eBackward); }
void FilteredContentIterator::Next() { if (mIsOutOfRange || !mCurrentIterator) { NS_ASSERTION(mCurrentIterator, "Missing iterator!"); return; } // If we are switching directions then // we need to switch how we process the nodes if (mDirection != eForward) { nsresult rv = SwitchDirections(true); if (NS_FAILED(rv)) { return; } } mCurrentIterator->Next(); if (mCurrentIterator->IsDone()) { return; } // If we can't get the current node then // don't check to see if we can skip it nsINode* currentNode = mCurrentIterator->GetCurrentNode(); CheckAdvNode(currentNode, mDidSkip, eForward); }
//------------------------------------------------------------ void nsFilteredContentIterator::Last() { if (!mCurrentIterator) { NS_ERROR("Missing iterator!"); return; } // If we are switching directions then // we need to switch how we process the nodes if (mDirection != eBackward) { mCurrentIterator = mIterator; mDirection = eBackward; mIsOutOfRange = false; } mCurrentIterator->Last(); if (mCurrentIterator->IsDone()) { return; } nsINode *currentNode = mCurrentIterator->GetCurrentNode(); nsCOMPtr<nsIDOMNode> node(do_QueryInterface(currentNode)); bool didCross; CheckAdvNode(node, didCross, eBackward); }
void FilteredContentIterator::First() { if (!mCurrentIterator) { NS_ERROR("Missing iterator!"); return; } // If we are switching directions then // we need to switch how we process the nodes if (mDirection != eForward) { mCurrentIterator = &mPreIterator; mDirection = eForward; mIsOutOfRange = false; } mCurrentIterator->First(); if (mCurrentIterator->IsDone()) { return; } nsINode* currentNode = mCurrentIterator->GetCurrentNode(); bool didCross; CheckAdvNode(currentNode, didCross, eForward); }