@@ -0,0 +1,1112 @@
+package innovimax.mixthem.io;%0A%0Aimport innovimax.mixthem.interfaces.IInputChar;%0A%0Aimport java.io.File;%0Aimport java.io.BufferedReader;%0Aimport java.io.FileInputStream;%0Aimport java.io.InputStreamReader;%0Aimport java.io.IOException;%0A%0A/*%0A    Created by innovimax%0A    Default implementation of IInputChar%0A*/%0Apublic class DefaultCharReader implements IInputChar %7B%0A%0A%09private BufferedReader reader = null;%0A%09private boolean ended = false;%0A%0A%09public DefaultCharReader(File input) throws IOException %7B%09%09%0A%09%09this.reader = new BufferedReader(new InputStreamReader(new FileInputStream(input)));%0A%09%7D%0A%0A%09@Override%0A%09public boolean hasCharacter() throws IOException %7B%0A%09%09return (reader.ready() && !this.ended);%0A%09%7D%0A%0A%09@Override%0A%09public int nextCharacter() throws IOException %7B%0A%09%09int c = this.reader.read();%0A%09%09if (c == -1) %7B%0A%09%09%09this.ended = true;%0A%09%09%7D%0A%09%09return c;%0A%09%7D%0A%0A%09@Override%0A%09public int nextCharacters(char%5B%5D buffer) throws IOException %7B%0A%09%09int len = this.reader.read(buffer, 0, buffer.length);%0A%09%09if (len == -1) %7B%0A%09%09%09this.ended = true;%0A%09%09%7D%0A%09%09return len;%0A%09%7D%0A%0A%09@Override%0A%09public void close() throws IOException %7B%0A%09%09this.reader.close();%0A%09%7D%0A%0A%7D%0A

Create DefaultCharReader.java