This library defines a Prolog stream that realises its low-level I/O with callbacks to Prolog. The library was developed to bind normal Prolog I/O to Pengines I/O. This type of I/O redirection is probably the primary use case.
Mode = write
stream if data is available.
String contains the (textual) data that is written
to Stream. The callback is called if the buffer of
Stream overflows, the user calls flush_output(Stream)
or Stream is closed and there is buffered data.Mode == read
stream to get new data. On
success the stream extracts text from the provided Term.
Term is typically a string, atom, code or character list.
If term is not one of the above, it is handed to writeq/1.
To signal end-of-file, unify stream with an empty text,
e.g., stream_read(Stream, "")
.
The current implementation only deals with text streams. The
stream uses the wchar_t
encoding. The buffer size must be a
multiple of wchar_t
, i.e., a multiple of four for portability.
The newline mode of the stream is posix
on all platforms,
disabling the translation "\n" --> "\r\n"
.