// 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: LookaheadEnumerator.java
package com.icl.saxon.expr;
import com.icl.saxon.om.NodeEnumeration;
import com.icl.saxon.om.NodeInfo;
import java.util.Vector;
// Referenced classes of package com.icl.saxon.expr:
// LastPositionFinder, XPathException
public class LookaheadEnumerator
implements NodeEnumeration, LastPositionFinder
{
private NodeEnumeration base;
private Vector reservoir;
private int reservoirPosition;
private int position;
private int last;
public LookaheadEnumerator(NodeEnumeration nodeenumeration)
{
/* 29*/ reservoir = null;
/* 30*/ reservoirPosition = -1;
/* 31*/ position = 0;
/* 32*/ last = -1;
/* 41*/ base = nodeenumeration;
}
public boolean hasMoreElements()
{
/* 49*/ if(reservoir == null)
/* 50*/ return base.hasMoreElements();
/* 52*/ else
/* 52*/ return reservoirPosition < reservoir.size();
}
public NodeInfo nextElement()
throws XPathException
{
/* 61*/ if(reservoir == null)
{
/* 62*/ position++;
/* 63*/ return base.nextElement();
}
/* 65*/ if(reservoirPosition < reservoir.size())
{
/* 66*/ position++;
/* 67*/ return (NodeInfo)reservoir.elementAt(reservoirPosition++);
} else
{
/* 69*/ return null;
}
}
public int getLastPosition()
throws XPathException
{
/* 79*/ if(last > 0)
/* 80*/ return last;
/* 83*/ reservoir = new Vector();
/* 84*/ reservoirPosition = 0;
/* 85*/ for(last = position; base.hasMoreElements(); last++)
/* 87*/ reservoir.addElement(base.nextElement());
/* 90*/ return last;
}
public boolean isSorted()
{
/* 99*/ return base.isSorted();
}
public boolean isReverseSorted()
{
/* 103*/ return base.isReverseSorted();
}
public boolean isPeer()
{
/* 112*/ return base.isPeer();
}
}