package abs.fli.java.io; import java.io.DataInputStream; import java.io.IOException; import ABS.StdLib.List; import FLI.StreamUtils.Feedback; import FLI.StreamUtils.Feedback_Error; import FLI.StreamUtils.Feedback_Result; import FLI.StreamUtils.InputStream_c; import abs.backend.java.lib.types.ABSInteger; import abs.backend.java.lib.types.ABSString; import abs.fli.java.PrimitiveUtil; public class InputStream extends InputStream_c { private DataInputStream stream = null; private final PrimitiveUtil putil = new PrimitiveUtil(); private final ByteUtil butil = new ByteUtil(); void setStream(DataInputStream stream) { this.stream = stream; } @Override public Feedback<ABSString> fli_readUTF() { try { return new Feedback_Result<ABSString>(putil.convert(stream.readUTF())); } catch (IOException e) { return new Feedback_Error<ABSString>(putil.convert(e.getMessage())); } } @Override public Feedback<ABSInteger> fli_readInt() { try { return new Feedback_Result<ABSInteger>(putil.convert(stream.readInt())); } catch (IOException e) { return new Feedback_Error<ABSInteger>(putil.convert(e.getMessage())); } } @Override public Feedback<List<FLI.StreamUtils.Byte>> fli_read(List<FLI.StreamUtils.Byte> b, ABSInteger off, ABSInteger len) { try { byte[] bs = butil.convert(b); stream.read(bs, off.toInt(), len.toInt()); return new Feedback_Result<List<FLI.StreamUtils.Byte>>(butil.convert(bs)); } catch (IOException e) { return new Feedback_Error<List<FLI.StreamUtils.Byte>>(putil.convert(e.getMessage())); } } }