seeing/1
seeing(
-FileOrStream)
Unifies FileOrStream with the current input stream or file.
Exactly the same as
current_input(
FileOrStream)
, except that
FileOrStream will be unified with a filename if the current
input stream was opened by see/1
(ref-iou-sfh-opn).
Can be used to verify that FileNameOrStream
is still the
current input stream as follows:
/* nonvar(FileNameOrStream), */ see(FileNameOrStream), ... seeing(FileNameOrStream)
If the current input stream has not been changed (or if changed, then
restored), the above sequence will succeed for all file names and all
stream objects opened by open/[3,4]
. However, it will fail for
all stream objects opened by see/1
(since only filename access
to streams opened by see/1
is supported). This includes the
stream object user_input
(since the standard input stream is
assumed to be opened by see/1
, and so seeing/1
would return
user
in this case).
If FileOrStream is instantiated to a value that is not the
identifier of the current input stream, seeing
(FileOrStream)
simply fails.
Can be followed by see/1
to ensure that a
section of code leaves the current input unchanged:
/* var(OldFileNameOrStream), */ seeing(OldFileNameOrStream), ... see(OldFileNameOrStream)
The above is analogous to its stream-object-based counterpart,
/* var(OldStream), */ current_input(OldStream), ... set_input(OldStream)
Both of these sequences will always succeed regardless of whether the current
input stream was opened by see/1
or open/3
(ref-iou-sfh-opn).
see/1
, open/[3,4]
, current_input/1