


The standard library File api defines basic text-mode file I/O.
The File api is implemented by the file package.
The File api source code is in src/lib/std/src/io/file.api.
The above information is manually maintained and may contain errors.
api { Vector = String;
Element = Char;
Input_Stream ;
Output_Stream ;
mutex : pthread::Mutex;
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 : api {
Vector = String;
Element = Char;
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 , io_exceptions::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 , io_exceptions::Buffering_Mode) -> Void;
get_buffering_mode : Output_Stream -> io_exceptions::Buffering_Mode;
get_writer : Output_Stream
-> (Stream_Writer , io_exceptions::Buffering_Mode);
file_pos_out : Out_Position -> File_Position;
get_output_position : Output_Stream -> Out_Position;
set_output_position : Out_Position -> Void;
read_line : Input_Stream -> Null_Or(((String , Input_Stream)) );
write_substring : (Output_Stream , Substring) -> 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 );
read_lines : Input_Stream -> List(String );
lines : String -> List(String );
write_substring : (Output_Stream , Substring) -> Void;
from_lines : String -> List(String ) -> Void;
exists : String -> Bool;
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;
print : String -> Void;
scan_stream : (number_string::Reader((Element, pio::Input_Stream) )
-> number_string::Reader((X, pio::Input_Stream) ))
-> Input_Stream -> Null_Or(X );
say : (Void -> String) -> Void;
log : (Void -> String) -> Void;
exception NO_SUCH_LOGTREE_NODE;
Logtree_Node
= LOGTREE_NODE {children:Ref(List(Logtree_Node ) ),
logging:Ref(Bool ), name:String,
parent:Null_Or(Logtree_Node )};
Log_To
= LOG_TO_FILE String
| LOG_TO_NULL
| LOG_TO_STDERR
| LOG_TO_STDOUT
| LOG_TO_STREAM Output_Stream;
logger_cleanup : Ref((Void -> Void) );
set_logger_to : Log_To -> Void;
logger_is_set_to : Void -> Log_To;
all_logging : Logtree_Node;
standardlib_logging : Logtree_Node;
compiler_logging : Logtree_Node;
make_logtree_leaf : {name:String, parent:Logtree_Node} -> Logtree_Node;
name_of_logtree_node : Logtree_Node -> String;
parent_of_logtree_node : Logtree_Node -> Null_Or(Logtree_Node );
enable : Logtree_Node -> Void;
disable : Logtree_Node -> Void;
enable_node : Logtree_Node -> Void;
am_logging : Logtree_Node -> Bool;
subtree_nodes_and_log_flags : Logtree_Node -> List(((Logtree_Node , Bool)) );
ancestors_of_logtree_node : Logtree_Node -> List(String );
find_logtree_node_by_name : String -> Logtree_Node;
print_logtree : Void -> Void;
logprint : String -> Void;
log_if : Logtree_Node -> (Void -> String) -> Void;
};


