1 /* Reattore HTTP Server
2
3 Copyright (C) 2002 Michael Hope <michaelh@juju.net.nz>
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
19 $Id: PushbackArray.java,v 1.4 2003/03/03 05:14:39 michaelh Exp $
20 */
21 package juju.reattore.util;
22
23
24 /*** Simple one character pushback system that works across multiple
25 input arrays.
26 */
27 public class PushbackArray {
28 /*** Returned when all bytes have been read. */
29 public static final int EOF = -256;
30 private int last = EOF;
31 private byte[] on;
32 private int pos;
33
34 /*** Seeds the push back system with a new array to read from.
35 Does not discard any existing push back.
36
37 @param ab The array to read from.
38 */
39 public void seed(byte[] ab) {
40 on = ab;
41 pos = 0;
42 }
43
44 /*** Returns the next byte in the pushback or input, or EOF if
45 everything has been read.
46
47 @return The next byte in the stream.
48 */
49 public int get() {
50 if (last != EOF) {
51 int ret = last;
52 last = EOF;
53
54 return ret;
55 }
56 else {
57 if (on == null) {
58 return EOF;
59 }
60 else if (pos < on.length) {
61 return on[pos++];
62 }
63 else {
64 return EOF;
65 }
66 }
67 }
68
69 /*** Returns the given byte back to the input. The next call to
70 get() will return this.
71
72 @param b Any byte. Does not have to have been read.
73 */
74 public void pushback(int b) {
75 assert last == EOF;
76 last = b;
77 }
78 }
This page was automatically generated by Maven