/*-------------------------------------------------------------------------*/
/* Prolog to Wam Compiler INRIA Rocquencourt - ChLoE Project */
/* Buit-In Predicates Daniel Diaz - 1994 */
/* */
/* Miscellaneous */
/* */
/* misc.pl */
/*-------------------------------------------------------------------------*/
/* statistics */
:- public statistics/0, statistics/2, cputime/1.
statistics:-
pragma_c('Display_Statistics();').
statistics(_S,_L):-
pragma_c('Statistics_2').
cputime(T):-
statistics(runtime,[T|_]).
/* gensym */
:- public gensym/1, gensym/2.
gensym(X):-
gensym('$sym',X).
gensym(Prefix,X):-
g_read(Prefix,Count),
Count1 is Count+1,
g_assign(Prefix,Count1),
number_atom(Count,X1),
atom_concat(Prefix,X1,X).
/* version */
:- public version/0, compiler_name/1, wam_version/1, wam_year/1.
version:-
pragma_c('Display_Version();').
compiler_name(_C):-
pragma_c('get_constant(atom_compiler,0,"")').
wam_version(_V):-
pragma_c('get_constant(atom_wam_version,0,"")').
wam_year(_D):-
pragma_c('get_integer(WAM_YEAR,0)').
/* Unix Arguments */
:- public argc/1, argv/2.
argc(_N):-
pragma_c('Argc_1').
argv(_N,_A):-
pragma_c('Argv_2').
/* unix interface */
:- public unix/1.
unix(access(P,M)):-
unix_access(P,M).
unix(argv(A)):-
unix_argv(A).
unix(cd):-
unix_getenv('HOME',P),
unix_cd(P).
unix(cd(P)):-
unix_cd(P).
unix(exit(S)):-
halt(S).
unix(getenv(N,V)):-
unix_getenv(N,V).
unix(shell):-
unix_shell(_,_).
unix(shell(C)):-
unix_shell(C,_).
unix(shell(C,S)):-
unix_shell(C,S).
unix(system(C)):-
unix_system(C,_).
unix(system(C,S)):-
unix_system(C,S).
unix_access(_P,_M):-
pragma_c('Unix_Access_2').
unix_argv(A):-
argc(N),
unix_argv1(1,N,A). /* unix_argv1 without arg[0] (i.e. prg name) */
unix_argv1(I,N,A):-
(I==N -> A=[]
;
argv(I,X),
A=[X|A1],
I1 is I+1,
unix_argv1(I1,N,A1)).
unix_cd(_P):-
pragma_c('Unix_Cd_1').
unix_getenv(_N,_V):-
pragma_c('Unix_Getenv_2').
unix_shell(C,S):-
(unix_getenv('SHELL',ShName) ; ShName='/bin/sh'),
!,
atom_concat('exec ',ShName,C0),
(var(C) -> Cmd=C0
;
atom_concat(C0,' -c ',C1),
atom_concat(C1,C,Cmd)),
unix_system(Cmd,S).
unix_system(_C,_S):-
pragma_c('Unix_System_2').
syntax highlighted by Code2HTML, v. 0.9.1