/*-------------------------------------------------------------------------*/
/* Prolog to Wam Compiler               INRIA Rocquencourt - ChLoE Project */
/* Buit-In Predicates                                   Daniel Diaz - 1994 */
/*                                                                         */
/* debug predicates                                                        */
/*                                                                         */
/* trace.pl                                                                */
/*-------------------------------------------------------------------------*/

:- public debug/0, trace/0, nodebug/0, notrace/0, debug_mode/1, debugging/0,
          leash/1.

debug:-
	debug_mode(debug).

trace:-
	debug_mode(trace).

nodebug:-
	debug_mode(nodebug).

notrace:-
	debug_mode(nodebug).

debug_mode(_X):-
	pragma_c('Debug_Mode_1').

debugging:-
	pragma_c('Debug_Display_Infos();').




leash(L):-
	leash1(L),
	pragma_c('Debug_Display_Leashing();').


leash1([]):-
	pragma_c('Debug_Add_Leash_Mode(NULL);').

leash1([X|L]):-
	leash1(L),                             % do not reverse these 2 lines
	leash2(X).


leash2(_X):-
	pragma_c('Leash2_1').




:- public (spy)/1, (nospy)/1, nospyall/0.


spy(X/N):-
	spy1(X,N),
	debug_mode(D),
	(D==nodebug -> debug
                    ;  true).


spy1(_X,_N):-
	pragma_c('Spy1_2').




nospy(X/N):-
	nospy1(X,N).

nospy1(_X,_N):-
	pragma_c('Nospy1_2').




nospyall:-
	pragma_c('Debug_Remove_Spy_Point(NULL,0);').



syntax highlighted by Code2HTML, v. 0.9.1