71 lines
1.7 KiB
Java
71 lines
1.7 KiB
Java
/*******************************************************************************
|
|
* Copyright (c) 2002 - 2006 IBM Corporation.
|
|
* All rights reserved. This program and the accompanying materials
|
|
* are made available under the terms of the Eclipse Public License v1.0
|
|
* which accompanies this distribution, and is available at
|
|
* http://www.eclipse.org/legal/epl-v10.html
|
|
*
|
|
* Contributors:
|
|
* IBM Corporation - initial API and implementation
|
|
*******************************************************************************/
|
|
package com.ibm.wala.util.collections;
|
|
|
|
import java.util.EmptyStackException;
|
|
|
|
/**
|
|
* A stack of integer primitives. This should be more efficient than a java.util.Stack
|
|
*/
|
|
public class IntStack {
|
|
|
|
/**
|
|
* Comment for <code>top</code>
|
|
*/
|
|
private int top = -1;
|
|
/**
|
|
* Comment for <code>state</code>
|
|
*/
|
|
private int state[] = new int[0];
|
|
|
|
/**
|
|
* @param i
|
|
*/
|
|
public void push(int i) {
|
|
if (state.length <= (top+1)) {
|
|
int newState[] = new int[ state.length*2 + 1 ];
|
|
System.arraycopy(state, 0, newState, 0, state.length);
|
|
state = newState;
|
|
}
|
|
|
|
state[++top] = i;
|
|
}
|
|
|
|
/**
|
|
* @return the int at the top of the stack
|
|
*/
|
|
public int peek() throws EmptyStackException {
|
|
if (isEmpty()) {
|
|
throw new EmptyStackException();
|
|
}
|
|
return state[top];
|
|
}
|
|
|
|
/**
|
|
* pop the stack
|
|
* @return the int at the top of the stack
|
|
*/
|
|
public int pop() throws EmptyStackException{
|
|
if (isEmpty()) {
|
|
throw new EmptyStackException();
|
|
}
|
|
return state[top--];
|
|
}
|
|
|
|
/**
|
|
* @return true iff the stack is empty
|
|
*/
|
|
public boolean isEmpty() {
|
|
return top == -1;
|
|
}
|
|
|
|
}
|