fixed implementation of IsDone()

git-svn-id: svn://10.0.0.236/trunk@18966 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
jfrancis%netscape.com
1999-01-28 23:55:53 +00:00
parent 9170fd690c
commit 373d464054
3 changed files with 27 additions and 5 deletions

View File

@@ -49,6 +49,7 @@ nsContentIterator::nsContentIterator(nsIContent* aRoot)
mCurNode = nsnull;
mFirst = nsnull;
mLast = nsnull;
mIsDone = false;
if (!aRoot)
{
@@ -68,6 +69,7 @@ nsContentIterator::nsContentIterator(nsIDOMRange* aRange)
mCurNode = nsnull;
mFirst = nsnull;
mLast = nsnull;
mIsDone = false;
if (!aRange)
{
@@ -176,6 +178,7 @@ nsContentIterator::~nsContentIterator()
nsresult nsContentIterator::First()
{
if (!mFirst) return NS_ERROR_FAILURE;
mIsDone = false;
if (mFirst == mCurNode) return NS_OK;
NS_IF_RELEASE(mCurNode);
mCurNode = mFirst;
@@ -187,6 +190,7 @@ nsresult nsContentIterator::First()
nsresult nsContentIterator::Last()
{
if (!mLast) return NS_ERROR_FAILURE;
mIsDone = false;
if (mLast == mCurNode) return NS_OK;
NS_IF_RELEASE(mCurNode);
mCurNode = mLast;
@@ -197,8 +201,13 @@ nsresult nsContentIterator::Last()
nsresult nsContentIterator::Next()
{
if (mIsDone) return NS_ERROR_FAILURE;
if (!mCurNode) return NS_OK;
if (mCurNode == mLast) return NS_ERROR_FAILURE;
if (mCurNode == mLast)
{
mIsDone = true;
return NS_ERROR_FAILURE;
}
nsIContent *cParent;
nsIContent *cSibling;
@@ -242,6 +251,7 @@ nsresult nsContentIterator::Prev()
nsresult nsContentIterator::CurrentNode(nsIContent **aNode)
{
if (!mCurNode) return NS_ERROR_FAILURE;
if (mIsDone) return NS_ERROR_FAILURE;
*aNode = mCurNode;
NS_ADDREF(*aNode);
return NS_OK;
@@ -250,7 +260,7 @@ nsresult nsContentIterator::CurrentNode(nsIContent **aNode)
nsresult nsContentIterator::IsDone()
{
if (mCurNode == mLast) return NS_OK;
if (mIsDone) return NS_OK;
else return NS_COMFALSE;
}

View File

@@ -49,6 +49,7 @@ nsContentIterator::nsContentIterator(nsIContent* aRoot)
mCurNode = nsnull;
mFirst = nsnull;
mLast = nsnull;
mIsDone = false;
if (!aRoot)
{
@@ -68,6 +69,7 @@ nsContentIterator::nsContentIterator(nsIDOMRange* aRange)
mCurNode = nsnull;
mFirst = nsnull;
mLast = nsnull;
mIsDone = false;
if (!aRange)
{
@@ -176,6 +178,7 @@ nsContentIterator::~nsContentIterator()
nsresult nsContentIterator::First()
{
if (!mFirst) return NS_ERROR_FAILURE;
mIsDone = false;
if (mFirst == mCurNode) return NS_OK;
NS_IF_RELEASE(mCurNode);
mCurNode = mFirst;
@@ -187,6 +190,7 @@ nsresult nsContentIterator::First()
nsresult nsContentIterator::Last()
{
if (!mLast) return NS_ERROR_FAILURE;
mIsDone = false;
if (mLast == mCurNode) return NS_OK;
NS_IF_RELEASE(mCurNode);
mCurNode = mLast;
@@ -197,8 +201,13 @@ nsresult nsContentIterator::Last()
nsresult nsContentIterator::Next()
{
if (mIsDone) return NS_ERROR_FAILURE;
if (!mCurNode) return NS_OK;
if (mCurNode == mLast) return NS_ERROR_FAILURE;
if (mCurNode == mLast)
{
mIsDone = true;
return NS_ERROR_FAILURE;
}
nsIContent *cParent;
nsIContent *cSibling;
@@ -242,6 +251,7 @@ nsresult nsContentIterator::Prev()
nsresult nsContentIterator::CurrentNode(nsIContent **aNode)
{
if (!mCurNode) return NS_ERROR_FAILURE;
if (mIsDone) return NS_ERROR_FAILURE;
*aNode = mCurNode;
NS_ADDREF(*aNode);
return NS_OK;
@@ -250,7 +260,7 @@ nsresult nsContentIterator::CurrentNode(nsIContent **aNode)
nsresult nsContentIterator::IsDone()
{
if (mCurNode == mLast) return NS_OK;
if (mIsDone) return NS_OK;
else return NS_COMFALSE;
}

View File

@@ -57,7 +57,7 @@ public:
virtual nsresult CurrentNode(nsIContent **aItem);
virtual nsresult IsDone();
protected:
static nsIContent* GetDeepFirstChild(nsIContent* aRoot);
@@ -65,6 +65,8 @@ protected:
nsIContent *mCurNode;
nsIContent *mFirst;
nsIContent *mLast;
PRBool mIsDone;
private: