


## threadkit-file.api
#
# This extends the Mythryl File interface with mailop-valued operations.
# Compiled by:
# src/lib/std/standard.libstipulate
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.pkgherein
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.


