PreviousUpNext

15.3.471  src/lib/std/src/io/threadkit-file.api

## threadkit-file.api
#
# This extends the Mythryl File interface with mailop-valued operations.

# Compiled by:
#     src/lib/std/standard.lib



stipulate
   package ns  =  number_string;                                                # number_string                 is from   src/lib/std/src/number-string.pkg
   package tbi =  threadkit_text_stream_readers_and_writers;                    # threadkit_text_stream_readers_and_writers     is from   src/lib/std/src/io/threadkit-text-stream-readers-and-writers.pkg
   package tk  =  threadkit;                                                    # threadkit                     is from   src/lib/src/lib/thread-kit/src/core-thread-kit/threadkit.pkg
herein

    api Threadkit_File {
        #
        #  include File
        Vector = String;
        Element = Char;

        Input_Stream;
        Output_Stream;

        read:           Input_Stream -> Vector;
        read_one:       Input_Stream -> Null_Or( Element );
        read_n:        (Input_Stream, Int) -> Vector;
        read_all:       Input_Stream -> Vector;
        can_read:      (Input_Stream, Int) -> Null_Or(Int);
        lookahead:      Input_Stream -> Null_Or(Element);
        close_input:    Input_Stream -> Void;
        end_of_stream:  Input_Stream -> Bool;

        write:         (Output_Stream, Vector) -> Void;
        write_one:     (Output_Stream, Element) -> Void;
        flush:          Output_Stream -> Void;
        close_output:   Output_Stream -> Void;

        package pio                                                             # "pio" == "pure_io".
        :       Threadkit_Text_Pure_Io                                          # Threadkit_Text_Pure_Io        is from   src/lib/std/src/io/threadkit-text-pure-io.api
          where  Stream_Reader == tbi::Stream_Reader
          where  Stream_Writer == tbi::Stream_Writer
          where  File_Position == tbi::File_Position
          where  Vector        == String
          where  Element       == Char;

    /*
        my getPosIn:     Input_Stream -> pio::in_pos
        my setPosIn:     (Input_Stream * pio::in_pos) -> Void
    */
        make_instream:   pio::Input_Stream -> Input_Stream;
        get_instream:  Input_Stream -> pio::Input_Stream;
        set_instream:  ((Input_Stream, pio::Input_Stream)) -> Void;

        get_output_position:     Output_Stream -> pio::Out_Position;
        set_output_position:    (Output_Stream, pio::Out_Position) -> Void;

        make_outstream:   pio::Output_Stream -> Output_Stream;

        get_outstream:   Output_Stream -> pio::Output_Stream;
        set_outstream:  (Output_Stream, pio::Output_Stream) -> Void;

        read_line:     Input_Stream -> Null_Or(String);
        write_substring:  (Output_Stream, Substring) -> Void;

        open_for_read:   String -> Input_Stream;
        open_string:     String -> Input_Stream;

        open_for_write:  String -> Output_Stream;
        open_for_append: String -> Output_Stream;

        stdin:   Input_Stream;
        stdout:  Output_Stream;
        stderr:  Output_Stream;

        input1evt:          Input_Stream       -> tk::Mailop( Null_Or( Element ) );
        input_nevt:        (Input_Stream, Int) -> tk::Mailop( Vector );
        input_mailop:       Input_Stream       -> tk::Mailop( Vector );
        input_all_mailop:   Input_Stream       -> tk::Mailop( Vector );

        open_slot_in:   tk::Mailslot( String ) -> Input_Stream;
        open_slot_out:  tk::Mailslot( String ) -> Output_Stream;

        print:  String -> Void;

        scan_stream
            :
            (    ns::Reader( Element, pio::Input_Stream )
              -> ns::Reader( X,       pio::Input_Stream )
            )
            -> Input_Stream
            -> Null_Or(X);

    };
end;

## COPYRIGHT (c) 1991 John H. Reppy.
## COPYRIGHT (c) 1996 AT&T Research.
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2011,
## released under Gnu Public Licence version 3.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext