From 5278affb0ee912188fbf7868550885e450a45289 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Thu, 5 Nov 2015 17:14:31 +0000 Subject: [PATCH] Edinburgh IO, still useful. --- os/edio.yap | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ pl/init.yap | 1 + 2 files changed, 54 insertions(+) create mode 100644 os/edio.yap diff --git a/os/edio.yap b/os/edio.yap new file mode 100644 index 000000000..83bc62c2a --- /dev/null +++ b/os/edio.yap @@ -0,0 +1,53 @@ +% +% Edinburgh IO. + % + +see(user) :- !, set_input(user_input). +see(F) :- var(F), !, + '$do_error'(instantiation_error,see(F)). +see(F) :- current_input(Stream), + '$user_file_name'(Stream,F). +see(F) :- current_stream(_,read,Stream), '$user_file_name'(Stream,F), !, + set_input(Stream). +see(Stream) :- '$stream'(Stream), current_stream(_,read,Stream), !, + set_input(Stream). +see(F) :- open(F,read,Stream), set_input(Stream). + +seeing(File) :- current_input(Stream), + stream_property(Stream,file_name(NFile)), + ( + stream_property(user_input,file_name(NFile)) + -> + File = user + ; + NFile = File + ). + +seen :- current_input(Stream), close(Stream), set_input(user). + +tell(user) :- !, set_output(user_output). +tell(F) :- var(F), !, + '$do_error'(instantiation_error,tell(F)). +tell(F) :- + current_output(Stream), + stream_property(Stream,file_name(F)), + !. +tell(F) :- current_stream(_,write,Stream), '$user_file_name'(Stream, F), !, + set_output(Stream). +tell(Stream) :- + '$stream'(Stream), + current_stream(_,write,Stream), !, + set_output(Stream). +tell(F) :- + open(F,write,Stream), + set_output(Stream). + +telling(File) :- + current_output(Stream), + stream_property(Stream,file_name(NFile)), + ( stream_property(user_output,file_name(NFile)) -> File = user ; File = NFile ). + +told :- current_output(Stream), + set_output(user), + close(Stream). + diff --git a/pl/init.yap b/pl/init.yap index edb480a58..12977dbbf 100644 --- a/pl/init.yap +++ b/pl/init.yap @@ -250,6 +250,7 @@ rules. :- use_module('../swi/library/menu.pl'). :- use_module('../library/ypp.yap'). :- use_module('../os/chartypes.yap'). +:- ensure_loaded('../os/edio.yap'). yap_hacks:cut_by(CP) :- '$$cut_by'(CP).