


## pure-io.api
#
# Here we define pure-functional input streams,
# in which reading a line (or whatever) leaves the
# input stream unchanged, instead returning the
# line read and a new input stream equal to the
# original one minus the amount read.
#
# Despite our name, we do not attempt side-effect-free
# output; our output streams are the same as the
# regular imperative ones.
# Compiled by:
# src/lib/std/src/standard-core.sublib# Specialized by:
# src/lib/std/src/io/text-pure-io.api# Used in:
# src/lib/std/src/io/imperative-io.api stipulate
package iox = io_exceptions; # io_exceptions is from src/lib/std/src/io/io-exceptions.pkgherein
api Pure_Io {
#
Vector;
Element;
Stream_Reader;
Stream_Writer;
Input_Stream;
Output_Stream;
File_Position;
Out_Position;
make_instream: (Stream_Reader, Vector) -> Input_Stream;
read: Input_Stream -> (Vector, Input_Stream);
read_one: Input_Stream -> Null_Or( (Element, Input_Stream) );
read_n: (Input_Stream, Int) -> (Vector, Input_Stream);
read_all: Input_Stream -> (Vector, Input_Stream);
can_read: (Input_Stream, Int) -> Null_Or(Int);
close_input: Input_Stream -> Void;
end_of_stream: Input_Stream -> Bool;
get_reader : Input_Stream -> (Stream_Reader, Vector);
file_position_in: Input_Stream -> File_Position;
make_outstream: (Stream_Writer, iox::Buffering_Mode) -> Output_Stream;
write: (Output_Stream, Vector ) -> Void;
write_one: (Output_Stream, Element) -> Void;
flush: Output_Stream -> Void;
close_output: Output_Stream -> Void;
set_buffering_mode: (Output_Stream, iox::Buffering_Mode) -> Void;
get_buffering_mode: Output_Stream -> iox::Buffering_Mode;
get_writer: Output_Stream -> (Stream_Writer, iox::Buffering_Mode);
file_pos_out: Out_Position -> File_Position;
get_output_position: Output_Stream -> Out_Position;
set_output_position: Out_Position -> Void;
};
end;
## COPYRIGHT (c) 1995 AT&T Bell Laboratories.
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2011,
## released under Gnu Public Licence version 3.


