3 /** FIFO class. This helps implement the lookahead we need for JSR-14.
4 * Copyright (C) 2002 C. Scott Ananian <cananian@alumni.princeton.edu>
5 * This program is released under the terms of the GPL; see the file
6 * COPYING for more details. There is NO WARRANTY on this code.
10 java_cup.runtime.Symbol[] backing = new java_cup.runtime.Symbol[10];
16 public boolean isEmpty() {
19 private boolean isFull() {
20 return start==end+1 || (start==0 && end==backing.length-1);
23 return ((end<start)?end+backing.length:end)-start;
25 public void put(java_cup.runtime.Symbol o) {
27 java_cup.runtime.Symbol[] nbacking =
28 new java_cup.runtime.Symbol[backing.length*2];
29 System.arraycopy(backing, start, nbacking, 0, backing.length-start);
30 System.arraycopy(backing, 0, nbacking, backing.length-start, start);
32 end = backing.length-1;
37 if (end == backing.length)
41 public java_cup.runtime.Symbol get() throws java.io.IOException {
45 java_cup.runtime.Symbol o = backing[start++];
46 if (start == backing.length)
51 public java_cup.runtime.Symbol peek(int i) throws java.io.IOException {
55 if (index >= backing.length) index -= backing.length;
56 ASSERT(0<= index && index < backing.length);
57 return backing[index];
59 abstract static class Getter {
60 abstract java_cup.runtime.Symbol next()
61 throws java.io.IOException;
63 private static void ASSERT(boolean b) {
64 if (!b) throw new RuntimeException();