// 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: FollowingEnumeration.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 FollowingEnumeration
implements AxisEnumeration
{
private TinyDocumentImpl document;
private TinyNodeImpl startNode;
private int nextNodeNr;
private NodeTest test;
int last;
boolean includeDescendants;
public FollowingEnumeration(TinyDocumentImpl tinydocumentimpl, TinyNodeImpl tinynodeimpl, NodeTest nodetest, boolean flag)
{
/* 17*/ last = -1;
/* 22*/ document = tinydocumentimpl;
/* 23*/ test = nodetest;
/* 24*/ startNode = tinynodeimpl;
/* 25*/ nextNodeNr = tinynodeimpl.nodeNr;
/* 26*/ includeDescendants = flag;
/* 27*/ short word0 = tinydocumentimpl.depth[nextNodeNr];
/* 30*/ if(flag)
/* 31*/ nextNodeNr++;
/* 34*/ else
/* 34*/ do
{
/* 34*/ nextNodeNr++;
/* 35*/ if(nextNodeNr >= tinydocumentimpl.numberOfNodes)
{
/* 36*/ nextNodeNr = -1;
/* 37*/ return;
}
} while(tinydocumentimpl.depth[nextNodeNr] > word0);
/* 42*/ if(!test.matches(tinydocumentimpl.nodeType[nextNodeNr], tinydocumentimpl.nameCode[nextNodeNr]))
/* 43*/ advance();
}
private void advance()
{
/* 49*/ do
{
/* 49*/ nextNodeNr++;
/* 50*/ if(nextNodeNr >= document.numberOfNodes)
{
/* 51*/ nextNodeNr = -1;
/* 52*/ return;
}
} while(!test.matches(document.nodeType[nextNodeNr], document.nameCode[nextNodeNr]));
}
public boolean hasMoreElements()
{
/* 58*/ return nextNodeNr >= 0;
}
public NodeInfo nextElement()
{
/* 62*/ TinyNodeImpl tinynodeimpl = document.getNode(nextNodeNr);
/* 63*/ advance();
/* 64*/ return tinynodeimpl;
}
public boolean isSorted()
{
/* 68*/ return true;
}
public boolean isReverseSorted()
{
/* 72*/ return false;
}
public boolean isPeer()
{
/* 76*/ return false;
}
public int getLastPosition()
{
/* 84*/ if(last >= 0)
/* 84*/ return last;
/* 85*/ FollowingEnumeration followingenumeration = new FollowingEnumeration(document, startNode, test, includeDescendants);
/* 87*/ for(last = 0; followingenumeration.hasMoreElements(); last++)
/* 89*/ followingenumeration.nextElement();
/* 92*/ return last;
}
}