Previous Contents Next
6.11 Constant term streams

6.11.1 Introduction
Constant term streams allow the user to consider a constant term (atom, character list or character code list) as a source/sink by associating to them a stream. Reading from a constant term stream will deliver the characters of the constant term as if they had been read from a standard file. Characters written on a constant term stream are stored to form the final constant term when the stream is closed. The built-in predicates described in this section allow the user to open and close a constant term stream for input or output. However, very often, a constant term stream is created to be only read or written once and then closed. To avoid the creation and the destruction of such a stream, GNU Prolog offers several built-in predicates to perform single input/output from/to constant terms (section 6.15).

6.11.2 open_input_atom_stream/2, open_input_chars_stream/2,
open_input_codes_stream/2

Templates

open_input_atom_stream(+atom, -stream)
open_input_chars_stream(+character_list, -stream)
open_input_codes_stream(+character_code_list, -stream)
Description

open_input_atom_stream(Atom, Stream) unifies Stream with the stream-term which is associated to a new input text-stream whose data are the characters of Atom.

open_input_chars_stream(Chars, Stream) is similar to open_input_atom_stream/2 except that data are the content of the character list Chars.

open_input_codes_stream(Codes, Stream) is similar to open_input_atom_stream/2 except that data are the content of the character code list Codes.

Errors

Stream is not a variable    type_error(variable, Stream)
Atom is a variable    instantiation_error
Chars is a partial list or a list with an element E which is a variable    instantiation_error
Codes is a partial list or a list with an element E which is a variable    instantiation_error
Atom is neither a variable nor a an atom    type_error(atom, Atom)
Chars is neither a partial list nor a list    type_error(list, Chars)
Codes is neither a partial list nor a list    type_error(list, Codes)
an element E of the Chars list is neither a variable nor a character    type_error(character, E)
an element E of the Codes list is neither a variable nor an integer    type_error(integer, E)
an element E of the Codes list is an integer but not a character code    representation_error(character_code)

Portability

GNU Prolog predicates.

6.11.3 close_input_atom_stream/1, close_input_chars_stream/1,
close_input_codes_stream/1

Templates

close_input_atom_stream(+stream_or_alias)
close_input_chars_stream(+stream_or_alias)
close_input_codes_stream(+stream_or_alias)
Description

close_input_atom_stream(SorA) closes the constant term stream associated with the stream-term or alias SorA. SorA must a stream open with open_input_atom_stream/2 (section 6.11.1).

close_input_chars_stream(SorA) acts similarly for a character list stream.

close_input_codes_stream(SorA) acts similarly for a character code list stream.

Errors

SorA is a variable    instantiation_error
SorA is neither a variable nor a stream-term or alias    domain_error(stream_or_alias, SorA)
SorA is not associated with an open stream    existence_error(stream, SorA)
SorA is an output stream    permission_error(close, stream, SorA)
SorA is a stream-term or alias but does not refer to a constant term stream.    domain_error(term_stream_or_alias, SorA)

Portability

GNU Prolog predicates.

6.11.4 open_output_atom_stream/1, open_output_chars_stream/1,
open_output_codes_stream/1

Templates

open_output_atom_stream(-stream)
open_output_chars_stream(-stream)
open_output_codes_stream(-stream)
Description

open_output_atom_stream(Stream) unifies Stream with the stream-term which is associated to a new output text-stream. All characters written to this stream are collected and will be returned as an atom when the stream is closed by close_ouput_atom_stream/2 (section 6.11.5).

open_output_chars_stream(Stream) is similar to open_output_atom_stream/1 except that the result will be a character list.

open_output_codes_stream(Stream) is similar to open_output_atom_stream/1 except that the result will be a character code list.

Errors

Stream is not a variable    type_error(variable, Stream)

Portability

GNU Prolog predicates.

6.11.5 close_output_atom_stream/2, close_output_chars_stream/2,
close_output_codes_stream/2

Templates

close_output_atom_stream(+stream_or_alias, ?atom)
close_output_chars_stream(+stream_or_alias, ?character_list)
close_output_codes_stream(+stream_or_alias, ?character_code_list)
Description

close_output_atom_stream(SorA, Atom) closes the constant term stream associated with the stream-term or alias SorA. SorA must be associated to a stream open with open_output_atom_stream/1 (section 6.11.4). Atom is unified with an atom formed with all characters written on the stream.

close_output_chars_stream(SorA, Chars) acts similarly for a character list stream.

close_output_codes_stream(SorA, Codes) acts similarly for a character code list stream.

Errors

SorA is a variable    instantiation_error
Atom is neither a variable nor an atom    type_error(atom, Atom)
Chars is neither a partial list nor a list    type_error(list, Chars)
Codes is neither a partial list nor a list    type_error(list, Codes)
SorA is neither a variable nor a stream-term or alias    domain_error(stream_or_alias, SorA)
SorA is not associated with an open stream    existence_error(stream, SorA)
SorA is an input stream    permission_error(close, stream, SorA)
SorA is a stream-term or alias but does not refer to a constant term stream    domain_error(term_stream_or_alias, SorA)

Portability

GNU Prolog predicates.


Copyright (C) 1999,2000 Daniel Diaz

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

More about the copyright
Previous Contents Next