// $Id: stack.java,v 1.9 2002/08/02 16:38:14 jderoo Exp $

class stack {
  int max = 4096;
  int top = 0;
  Euler[] ea = new Euler[max];
  int[] ia = new int[max];
  Euler w = new Euler();

  final void push(Euler e, int i) {
    ea[top] = e;
    ia[top++] = i;
    if (top == max) {
      Euler[] ea_ = ea;
      int[] ia_ = ia;
      int max_ = max;
      max = max * 2;
      ea = new Euler[max];
      ia = new int[max];
      System.arraycopy(ea_, 0, ea, 0, max_);
      System.arraycopy(ia_, 0, ia, 0, max_);
    }
  }

  final Euler pop() {
    if (top == 0) return null;
    if (ea[--top] == null) {
      w.varid = ia[top];
      return w;
    }
    else return ea[top];
  }
}
