PreviousUpNext

15.3.467  src/lib/std/src/io/pure-io.api

## 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.pkg
herein

    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.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext