checkpoint
[sbp.git] / src / edu / berkeley / sbp / chr / CharInput.java
diff --git a/src/edu/berkeley/sbp/chr/CharInput.java b/src/edu/berkeley/sbp/chr/CharInput.java
new file mode 100644 (file)
index 0000000..1178e42
--- /dev/null
@@ -0,0 +1,30 @@
+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;
+    }
+}