FileDocCategorySizeDatePackage
IntStack.javaAPI DocJava SE 5 API4547Fri Aug 26 14:56:04 BST 2005com.sun.org.apache.xml.internal.utils

IntStack

public class IntStack extends IntVector
Implement a stack of simple integers. %OPT% This is currently based on IntVector, which permits fast acess but pays a heavy recopying penalty if/when its size is increased. If we expect deep stacks, we should consider a version based on ChunkedIntVector.
xsl.usage
internal

Fields Summary
Constructors Summary
public IntStack()
Default constructor. Note that the default block size is very small, for small lists.

    super();
  
public IntStack(int blocksize)
Construct a IntVector, using the given block size.

param
blocksize Size of block to allocate

    super(blocksize);
  
public IntStack(IntStack v)
Copy constructor for IntStack

param
v IntStack to copy

  	super(v);
  
Methods Summary
public java.lang.Objectclone()
Returns clone of current IntStack

return
clone of current IntStack

  	return (IntStack) super.clone();
  
public booleanempty()
Tests if this stack is empty.

return
true if this stack is empty; false otherwise.
since
JDK1.0

    return m_firstFree == 0;
  
public final intpeek()
Looks at the object at the top of this stack without removing it from the stack.

return
the object at the top of this stack.
throws
EmptyStackException if this stack is empty.

    try {
      return m_map[m_firstFree - 1];
    }
    catch (ArrayIndexOutOfBoundsException e)
    {
      throw new EmptyStackException();
    }
  
public intpeek(int n)
Looks at the object at the position the stack counting down n items.

param
n The number of items down, indexed from zero.
return
the object at n items down.
throws
EmptyStackException if this stack is empty.

    try {
      return m_map[m_firstFree-(1+n)];
    }
    catch (ArrayIndexOutOfBoundsException e)
    {
      throw new EmptyStackException();
    }
  
public final intpop()
Removes the object at the top of this stack and returns that object as the value of this function.

return
The object at the top of this stack.

    return m_map[--m_firstFree];
  
public intpush(int i)
Pushes an item onto the top of this stack.

param
i the int to be pushed onto this stack.
return
the item argument.


    if ((m_firstFree + 1) >= m_mapSize)
    {
      m_mapSize += m_blocksize;

      int newMap[] = new int[m_mapSize];

      System.arraycopy(m_map, 0, newMap, 0, m_firstFree + 1);

      m_map = newMap;
    }

    m_map[m_firstFree] = i;

    m_firstFree++;

    return i;
  
public final voidquickPop(int n)
Quickly pops a number of items from the stack.

    m_firstFree -= n;
  
public intsearch(int o)
Returns where an object is on this stack.

param
o the desired object.
return
the distance from the top of the stack where the object is] located; the return value -1 indicates that the object is not on the stack.
since
JDK1.0


    int i = lastIndexOf(o);

    if (i >= 0)
    {
      return size() - i;
    }

    return -1;
  
public voidsetTop(int val)
Sets an object at a the top of the statck

param
val object to set at the top
throws
EmptyStackException if this stack is empty.

    try {
      m_map[m_firstFree - 1] = val;
    }
    catch (ArrayIndexOutOfBoundsException e)
    {
      throw new EmptyStackException();
    }