package abs.fli.java.io; import java.io.DataOutputStream; import java.io.IOException; import ABS.StdLib.List; import FLI.StreamUtils.Feedback; import FLI.StreamUtils.Feedback_Error; import FLI.StreamUtils.Feedback_OK; import FLI.StreamUtils.OutputStream_c; import abs.backend.java.lib.types.ABSInteger; import abs.backend.java.lib.types.ABSString; import abs.backend.java.lib.types.ABSUnit; import abs.fli.java.PrimitiveUtil; public class OutputStream extends OutputStream_c { private DataOutputStream stream; private final PrimitiveUtil putil = new PrimitiveUtil(); private final ByteUtil butil = new ByteUtil(); void setStream(DataOutputStream stream) { this.stream = stream; } public Feedback<ABSUnit> fli_writeUTF(ABSString s) { try { stream.writeUTF(s.getString()); return new Feedback_OK<ABSUnit>(); } catch (IOException e) { return new Feedback_Error<ABSUnit>(putil.convert(e.getMessage())); } } public Feedback<ABSUnit> fli_writeLong(FLI.StreamUtils.Long s) { try { stream.writeLong(new Long(s.toLong().getArg0().toInt())); return new Feedback_OK<ABSUnit>(); } catch (IOException e) { return new Feedback_Error<ABSUnit>(putil.convert(e.getMessage())); } } public Feedback<ABSUnit> fli_writeInt(ABSInteger s) { try { stream.writeInt(s.toInt()); return new Feedback_OK<ABSUnit>(); } catch (IOException e) { return new Feedback_Error<ABSUnit>(putil.convert(e.getMessage())); } } public Feedback<ABSUnit> fli_write(List<FLI.StreamUtils.Byte> b, ABSInteger off, ABSInteger len) { try { stream.write(butil.convert(b), off.toInt(), len.toInt()); return new Feedback_OK<ABSUnit>(); } catch (IOException e) { return new Feedback_Error<ABSUnit>(putil.convert(e.getMessage())); } } }