package tarau.jinni; import java.io.Reader; import java.io.StringReader; import java.io.IOException; /** Builds Jinni Fluents from Java Streams */ class CharReader extends Source { protected Reader reader; CharReader(Reader reader,Prog p) { super(p); this.reader=reader; } CharReader(String f,Prog p) { super(p); makeReader(f); } CharReader(Term t,Prog p) { super(p); this.reader=new StringReader(t.toUnquoted()); } CharReader(Prog p) { this(IO.input,p); } protected void makeReader(String f) { this.reader=IO.url_or_file(f); } public Term getElement() { if(IO.input==reader) { String s=IO.promptln(">:"); if(null==s||s.length()==0) return null; return new Const(s); } if(null==reader) return null; int c=-1; try { c=reader.read(); } catch(IOException e) { } if(-1==c) { stop(); return null; } else return new Int(c); } public void stop() { if(null!=reader && IO.input!=reader) { try { reader.close(); } catch(IOException e) {} reader=null; } } }