package org.anodyneos.xpImpl.runtime; import java.util.EmptyStackException; final class IntStack { private int[] elementData; private int size = 0; public IntStack(int initialCapacity) { elementData = new int[initialCapacity]; } public IntStack() { this(32); } public void push(int value) { ensureCapacity(size + 1); elementData[size++] = value; } public int pop() throws EmptyStackException { int ret = peek(); size--; return ret; } public int peek() throws EmptyStackException { if (size == 0) { throw new EmptyStackException(); } else { return elementData[size -1]; } } public boolean empty() { return size == 0; } public int size() { return size; } public void ensureCapacity(int minCapacity) { int oldCapacity = elementData.length; if (minCapacity > oldCapacity) { int[] oldData = elementData; int newCapacity = (oldCapacity * 3)/2 + 1; if (newCapacity < minCapacity) { newCapacity = minCapacity; } elementData = new int[newCapacity]; System.arraycopy(oldData, 0, elementData, 0, size); } } }