// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packimports(3) fieldsfirst lnc
// Source File Name: DescendantEnumeration.java
package com.icl.saxon.tinytree;
import com.icl.saxon.om.AxisEnumeration;
import com.icl.saxon.om.NodeInfo;
import com.icl.saxon.pattern.NodeTest;
// Referenced classes of package com.icl.saxon.tinytree:
// TinyNodeImpl, TinyDocumentImpl
final class DescendantEnumeration
implements AxisEnumeration
{
TinyDocumentImpl document;
TinyNodeImpl startNode;
boolean includeSelf;
int nextNodeNr;
int startDepth;
NodeTest test;
int last;
TinyNodeImpl parentNode;
protected DescendantEnumeration(TinyDocumentImpl tinydocumentimpl, TinyNodeImpl tinynodeimpl, NodeTest nodetest, boolean flag)
{
/* 21*/ last = -1;
/* 26*/ document = tinydocumentimpl;
/* 27*/ startNode = tinynodeimpl;
/* 28*/ includeSelf = flag;
/* 29*/ test = nodetest;
/* 30*/ nextNodeNr = tinynodeimpl.nodeNr;
/* 31*/ startDepth = tinydocumentimpl.depth[nextNodeNr];
/* 32*/ if(!flag)
{
/* 35*/ nextNodeNr++;
/* 36*/ if(tinydocumentimpl.depth[nextNodeNr] <= startDepth)
/* 37*/ nextNodeNr = -1;
}
/* 42*/ if(nextNodeNr >= 0 && nextNodeNr < tinydocumentimpl.numberOfNodes && !nodetest.matches(document.nodeType[nextNodeNr], document.nameCode[nextNodeNr]))
/* 46*/ advance();
}
public boolean hasMoreElements()
{
/* 51*/ return nextNodeNr >= 0;
}
public NodeInfo nextElement()
{
/* 55*/ TinyNodeImpl tinynodeimpl = document.getNode(nextNodeNr);
/* 56*/ advance();
/* 57*/ return tinynodeimpl;
}
private void advance()
{
/* 62*/ do
{
/* 62*/ nextNodeNr++;
/* 63*/ if(nextNodeNr >= document.numberOfNodes || document.depth[nextNodeNr] <= startDepth)
{
/* 65*/ nextNodeNr = -1;
/* 66*/ return;
}
} while(!test.matches(document.nodeType[nextNodeNr], document.nameCode[nextNodeNr]));
}
public boolean isSorted()
{
/* 73*/ return true;
}
public boolean isReverseSorted()
{
/* 77*/ return false;
}
public boolean isPeer()
{
/* 81*/ return false;
}
public int getLastPosition()
{
/* 89*/ if(last >= 0)
/* 89*/ return last;
/* 90*/ DescendantEnumeration descendantenumeration = new DescendantEnumeration(document, startNode, test, includeSelf);
/* 92*/ for(last = 0; descendantenumeration.hasMoreElements(); last++)
/* 94*/ descendantenumeration.nextElement();
/* 97*/ return last;
}
}