/*
* @(#)$Id: LightStack.java,v 1.4 2001/09/06 02:48:10 Bear Exp $
*
* Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
*
* This software is the proprietary information of Sun Microsystems, Inc.
* Use is subject to license terms.
*
*/
package com.sun.msv.util;
/**
* light-weight stack implementation.
*
* This one is unsynchronized, and never shrink its memory footprint, but fast.
*
* @author <a href="mailto:kohsuke.kawaguchi@sun.com">Kohsuke KAWAGUCHI</a>
*/
public final class LightStack {
private Object[] buf = new Object[8];
private int len = 0;
public void push( Object o ) {
try {
buf[len] = o;
len++;
} catch( ArrayIndexOutOfBoundsException e ) {
Object[] nbuf = new Object[buf.length*2];
System.arraycopy( buf, 0, nbuf, 0, buf.length );
buf = nbuf;
buf[len++] = o;
}
}
public Object pop() {
return buf[--len];
}
public Object top() {
return buf[len-1];
}
public int size() {
return len;
}
public boolean contains( Object o ) {
for( int i=0; i<len; i++ )
if( buf[i]==o )
return true;
return false;
}
}