--- /dev/null
+package edu.berkeley.sbp.chr;
+import java.io.*;
+import java.util.*;
+import java.lang.reflect.*;
+import java.lang.ref.*;
+import edu.berkeley.sbp.*;
+import edu.berkeley.sbp.util.*;
+import edu.berkeley.sbp.misc.*;
+import edu.berkeley.sbp.Input.Location;
+
+public class CharInput extends CartesianInput<Character> {
+ private final Reader r;
+
+ public CharInput(String s) { this(new StringReader(s)); }
+ public CharInput(Reader r) { this(r, null); }
+ public CharInput(Reader r, String s) { this.r = r; }
+ public CharInput(InputStream i) { this(i, null); }
+ public CharInput(InputStream i, String s) { this(new InputStreamReader(i), s); }
+
+ boolean cr = false;
+ public boolean isCR() { return cr; }
+ public Character next() throws IOException {
+ cr = false;
+ int i = r.read();
+ if (i==-1) return null;
+ char c = (char)i;
+ cr = c=='\n';
+ return c;
+ }
+}