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

ObjectStack

public class ObjectStack extends ObjectVector
Implement a stack of simple integers. %OPT% This is currently based on ObjectVector, 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 ChunkedObjectVector.
xsl.usage
internal

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

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

param
blocksize Size of block to allocate

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

param
v ObjectStack to copy

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

return
clone of current ObjectStack

  	return (ObjectStack) 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 java.lang.Objectpeek()
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 java.lang.Objectpeek(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 java.lang.Objectpop()
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.

    Object val = m_map[--m_firstFree];
    m_map[m_firstFree] = null;
    
    return val;
  
public java.lang.Objectpush(java.lang.Object 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;

      Object newMap[] = new Object[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 voidquickPop(int n)
Quickly pops a number of items from the stack.

    m_firstFree -= n;
  
public intsearch(java.lang.Object 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(java.lang.Object 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();
    }