This commit was generated by cvs2svn to compensate for changes in r4,
which included commits to RCS files with non-trunk default branches. git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@5 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
120
library/charsio.yap
Normal file
120
library/charsio.yap
Normal file
@@ -0,0 +1,120 @@
|
||||
/*************************************************************************
|
||||
* *
|
||||
* YAP Prolog *
|
||||
* *
|
||||
* Yap Prolog was developed at NCCUP - Universidade do Porto *
|
||||
* *
|
||||
* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-1997 *
|
||||
* *
|
||||
**************************************************************************
|
||||
* *
|
||||
* File: charsio.yap *
|
||||
* Last rev: 5/12/99 *
|
||||
* mods: *
|
||||
* comments: I/O on character strings *
|
||||
* *
|
||||
*************************************************************************/
|
||||
|
||||
:- module(charsio, [
|
||||
format_to_chars/3,
|
||||
format_to_chars/4,
|
||||
write_to_chars/3,
|
||||
write_to_chars/2,
|
||||
atom_to_chars/3,
|
||||
atom_to_chars/2,
|
||||
number_to_chars/3,
|
||||
number_to_chars/2,
|
||||
read_from_chars/2,
|
||||
open_chars_stream/2,
|
||||
with_output_to_chars/2,
|
||||
with_output_to_chars/3,
|
||||
with_output_to_chars/4
|
||||
]).
|
||||
|
||||
format_to_chars(Form, Args, OUT) :-
|
||||
format_to_chars(Form, Args, [], OUT).
|
||||
|
||||
format_to_chars(Form, Args, L0, OUT) :-
|
||||
open_mem_write_stream(Stream),
|
||||
format(Stream,Form,Args),
|
||||
peek_mem_write_stream(Stream, L0, OUT),
|
||||
close(Stream).
|
||||
|
||||
write_to_chars(Term, OUT) :-
|
||||
write_to_chars(Term, [], OUT).
|
||||
|
||||
write_to_chars(Term, L0, OUT) :-
|
||||
open_mem_write_stream(Stream),
|
||||
write(Stream, Term),
|
||||
peek_mem_write_stream(Stream, L0, OUT),
|
||||
close(Stream).
|
||||
|
||||
atom_to_chars(Atom, OUT) :-
|
||||
atom_to_chars(Atom, [], OUT).
|
||||
|
||||
atom_to_chars(Atom, L0, OUT) :-
|
||||
var(Atom), !,
|
||||
throw(error(instantiation_error,atom_to_chars(Atom, L0, OUT))).
|
||||
atom_to_chars(Atom, L0, OUT) :-
|
||||
atom(Atom), !,
|
||||
open_mem_write_stream(Stream),
|
||||
write(Stream, Atom),
|
||||
peek_mem_write_stream(Stream, L0, OUT),
|
||||
close(Stream).
|
||||
atom_to_chars(Atom, L0, OUT) :-
|
||||
throw(error(type_error(atom,Atom),atom_to_chars(Atom, L0, OUT))).
|
||||
|
||||
number_to_chars(Number, OUT) :-
|
||||
number_to_chars(Number, [], OUT).
|
||||
|
||||
number_to_chars(Number, L0, OUT) :-
|
||||
var(Number), !,
|
||||
throw(error(instantiation_error,number_to_chars(Number, L0, OUT))).
|
||||
number_to_chars(Number, L0, OUT) :-
|
||||
number(Number), !,
|
||||
open_mem_write_stream(Stream),
|
||||
write(Stream, Number),
|
||||
peek_mem_write_stream(Stream, L0, OUT),
|
||||
close(Stream).
|
||||
number_to_chars(Number, L0, OUT) :-
|
||||
throw(error(type_error(number,Number),number_to_chars(Number, L0, OUT))).
|
||||
|
||||
read_from_chars(Chars, Term) :-
|
||||
open_mem_read_stream(Chars, Stream),
|
||||
read(Stream, Term),
|
||||
close(Stream).
|
||||
|
||||
open_chars_stream(Chars, Stream) :-
|
||||
open_mem_read_stream(Chars, Stream).
|
||||
|
||||
with_output_to_chars(Goal, Chars) :-
|
||||
with_output_to_chars(Goal, [], Chars).
|
||||
|
||||
with_output_to_chars(Goal, L0, Chars) :-
|
||||
with_output_to_chars(Goal, Stream, L0, Chars),
|
||||
close(Stream).
|
||||
|
||||
with_output_to_chars(Goal, Stream, L0, Chars) :-
|
||||
open_mem_write_stream(Stream),
|
||||
current_output(SO),
|
||||
set_output(Stream),
|
||||
do_output_to_chars(Goal, Stream, L0, Chars, SO).
|
||||
|
||||
do_output_to_chars(Goal, Stream, L0, Chars, SO) :-
|
||||
catch(Goal, Exception, handle_exception(Exception,Stream,SO)),
|
||||
!,
|
||||
set_output(SO),
|
||||
peek_mem_write_stream(Stream, L0, Chars).
|
||||
do_output_to_chars(_Goal, Stream, _L0, _Chars, SO) :-
|
||||
set_output(SO),
|
||||
close(Stream),
|
||||
fail.
|
||||
|
||||
handle_exception(Exception, Stream, SO) :-
|
||||
close(Stream),
|
||||
current_output(SO),
|
||||
throw(Exception).
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user