// Decompiled by: Fernflower v0.6 // Date: 16.01.2011 23:15:55 // Copyright: 2008-2009, Stiver // Home page: http://www.reversed-java.com package org.antlr.runtime.misc; import org.antlr.runtime.misc.FastQueue; public abstract class LookaheadStream extends FastQueue { public static final int UNINITIALIZED_EOF_ELEMENT_INDEX = Integer.MAX_VALUE; protected int eofElementIndex = Integer.MAX_VALUE; public Object eof = null; protected int lastMarker; protected int markDepth = 0; public LookaheadStream(Object var1) { this.eof = var1; } public void reset() { this.eofElementIndex = Integer.MAX_VALUE; super.reset(); } public abstract Object nextElement(); public Object remove() { Object var1 = this.get(0); ++this.p; if(this.p == this.data.size() && this.markDepth == 0) { this.clear(); } return var1; } public void consume() { this.sync(1); this.remove(); } public void sync(int var1) { int var2 = this.p + var1 - 1 - this.data.size() + 1; if(var2 > 0) { this.fill(var2); } } public void fill(int var1) { for(int var2 = 1; var2 <= var1; ++var2) { Object var3 = this.nextElement(); if(var3 == this.eof) { this.data.add(this.eof); this.eofElementIndex = this.data.size() - 1; } else { this.data.add(var3); } } } public int size() { throw new UnsupportedOperationException("streams are of unknown size"); } public Object LT(int var1) { if(var1 == 0) { return null; } else if(var1 < 0) { return this.LB(-var1); } else if(this.p + var1 - 1 >= this.eofElementIndex) { return this.eof; } else { this.sync(var1); return this.get(var1 - 1); } } protected Object LB(int var1) { return var1 == 0?null:(this.p - var1 < 0?null:this.get(-var1)); } public Object getCurrentSymbol() { return this.LT(1); } public int index() { return this.p; } public int mark() { ++this.markDepth; this.lastMarker = this.index(); return this.lastMarker; } public void release(int var1) { } public void rewind(int var1) { --this.markDepth; this.seek(var1); } public void rewind() { this.seek(this.lastMarker); } public void seek(int var1) { this.p = var1; } }