795341800e312f42529b065bf255651dcb0acb8f
[sbp.git] / src / edu / berkeley / sbp / chr / CharInput.java
1 package edu.berkeley.sbp.chr;
2 import java.io.*;
3 import java.util.*;
4 import java.lang.reflect.*;
5 import java.lang.ref.*;
6 import edu.berkeley.sbp.*;
7 import edu.berkeley.sbp.util.*;
8 import edu.berkeley.sbp.misc.*;
9 import edu.berkeley.sbp.Input.Location;
10
11 public class CharInput extends Cartesian.Input<Character> {
12     private final Reader r;
13     
14     public CharInput(String s)                { this(new StringReader(s)); }
15     public CharInput(Reader r)                { this(r, null); }
16     public CharInput(Reader r,      String s) { this.r = r; }
17     public CharInput(InputStream i)           { this(i, null); }
18     public CharInput(InputStream i, String s) { this(new InputStreamReader(i), s); }
19     
20     boolean cr = false;
21     public boolean   isCR() { return cr; }
22     public Character next() throws IOException {
23         cr = false;
24         int i = r.read();
25         if (i==-1) return null;
26         char c = (char)i;
27         cr = c=='\n';
28         return c;
29     }
30 }