1 package antlr.debug;
2 
3 import antlr.InputBuffer;
4 import antlr.CharStreamException;
5 import java.util.Vector;
6 import java.io.IOException;
7 
8 public class DebuggingInputBuffer extends InputBuffer {
9 	private InputBuffer buffer;
10 	private InputBufferEventSupport inputBufferEventSupport;
11 	private boolean debugMode = true;
12 
13 
DebuggingInputBuffer(InputBuffer buffer)14 	public DebuggingInputBuffer(InputBuffer buffer) {
15 		this.buffer = buffer;
16 		inputBufferEventSupport = new InputBufferEventSupport(this);
17 	}
addInputBufferListener(InputBufferListener l)18 	public void addInputBufferListener(InputBufferListener l) {
19 	  inputBufferEventSupport.addInputBufferListener(l);
20 	}
consume()21 	public void consume() {
22 		char la = ' ';
23 		try {la = buffer.LA(1);}
24 		catch (CharStreamException e) {} // vaporize it...
25 		buffer.consume();
26 		if (debugMode)
27 			inputBufferEventSupport.fireConsume(la);
28 	}
fill(int a)29 	public void fill(int a) throws CharStreamException {
30 		buffer.fill(a);
31 	}
getInputBufferListeners()32 	public Vector getInputBufferListeners() {
33 		return inputBufferEventSupport.getInputBufferListeners();
34 	}
isDebugMode()35 	public boolean isDebugMode() {
36 		return debugMode;
37 	}
isMarked()38 	public boolean isMarked() {
39 		return buffer.isMarked();
40 	}
LA(int i)41 	public char LA(int i) throws CharStreamException {
42 		char la = buffer.LA(i);
43 		if (debugMode)
44 			inputBufferEventSupport.fireLA(la,i);
45 		return la;
46 	}
mark()47 	public int mark() {
48 		int m = buffer.mark();
49 		inputBufferEventSupport.fireMark(m);
50 		return m;
51 	}
removeInputBufferListener(InputBufferListener l)52 	public void removeInputBufferListener(InputBufferListener l) {
53 	  if (inputBufferEventSupport != null)
54 	    inputBufferEventSupport.removeInputBufferListener(l);
55 	}
rewind(int mark)56 	public void rewind(int mark) {
57 		buffer.rewind(mark);
58 		inputBufferEventSupport.fireRewind(mark);
59 	}
setDebugMode(boolean value)60 	public void setDebugMode(boolean value) {
61 		debugMode = value;
62 	}
63 }
64