Prolog "charsio"

Admin User, erstellt 04. Dez. 2023
         
/**
* Warranty & Liability
* To the extent permitted by applicable law and unless explicitly
* otherwise agreed upon, XLOG Technologies AG makes no warranties
* regarding the provided information. XLOG Technologies AG assumes
* no liability that any problems might be solved with the information
* provided by XLOG Technologies AG.
*
* Rights & License
* All industrial property rights regarding the information - copyright
* and patent rights in particular - are the sole property of XLOG
* Technologies AG. If the company was not the originator of some
* excerpts, XLOG Technologies AG has at least obtained the right to
* reproduce, change and translate the information.
*
* Reproduction is restricted to the whole unaltered document. Reproduction
* of the information is only allowed for non-commercial uses. Selling,
* giving away or letting of the execution of the library is prohibited.
* The library can be distributed as part of your applications and libraries
* for execution provided this comment remains unchanged.
*
* Restrictions
* Only to be distributed with programs that add significant and primary
* functionality to the library. Not to be distributed with additional
* software intended to replace any components of the library.
*
* Trademarks
* Dogelog is a deposited trademark of XLOG Technologies AG.
*/
/***************************************************************/
/* Temporarily Redirecting */
/***************************************************************/
/**
* with_text_to(A, G):
* The predicate succeeds whenever the goal G succeeds and
* unifies A with its text output.
*/
% with_text_to(-Atom, +Goal)
with_text_to(A, G) :-
current_output(S),
try_call_finally(
sys_redirect_output,
(G, sys_fetch_output(A)),
set_output(S)).
% sys_redirect_output
sys_redirect_output :-
open_output_atom_stream(T),
set_output(T).
% sys_fetch_output(-Atom)
sys_fetch_output(A) :-
current_output(T),
flush_output(T),
close_output_atom_stream(T, A).
/**
* with_text_from(A, G):
* The predicate succeeds whenever the goal G succeeds and
* provides A as its text input.
*/
% with_text_from(+Atom, +Goal)
with_text_from(A, G) :-
current_input(S),
open_input_atom_stream(A, T),
try_call_finally(
set_input(T),
G,
set_input(S)).
/***************************************************************/
/* Term Atom */
/***************************************************************/
/**
* term_atom(T, A):
* term_atom(T, A, O):
* The build-in succeeds in writing the term T into a new
* atom A. The ternary predicate accepts write options O.
*/
% term_atom(+Term, -Atom)
term_atom(T, A) :-
term_atom(T, A, []).
% term_atom(+Term, -Atom, +List)
term_atom(T, A, O) :-
open_output_atom_stream(K),
write_term(K, T, [quoted(true)|O]),
flush_output(K),
close_output_atom_stream(K, A).
/*******************************************************************/
/* Foreign Predicates */
/*******************************************************************/
% open_input_atom_stream(X, Y):
% defined in foreign(util/auxlib)
% open_output_atom_stream(X):
% defined in foreign(util/auxlib)
% close_output_atom_stream(X, Y):
% defined in foreign(util/auxlib)
% xml_escape(X, Y):
% defined in foreign(util/auxlib)
% percent_encode(X, Y):
% defined in foreign(util/auxlib)
:- ensure_loaded(foreign(util/auxlib)).