:- multifile portray_message/2.
% 
% portray_message( Mode, pfd(Code,Message) ) :-
	% write( user_error, pfd_code(Code) ), nl,
	% print_message( Mode, Message ),
	% halt( Code ).

% portray_message( pfd, dbg(Message) ) :-
     % print_message( informational, Message ).
% portray_message( A, B ) :-
     % write( portraying(A,B) ), nl.
     % demo.
% portray_message( informational, prompt(off,0,user,off) ) :-
     % [loads],
     % demo.
% portray_message( error, syntax_error(Gal,Pos,Mes,Tok,Aft) ) :-
     % print_message( informational, syntax_error(goal(Gal)) ),
     % print_message( informational, syntac_error(position(Pos)) ),
     % print_message( informational, syntac_error(message(Mes)) ),
     % % print_message( informational, syntac_error(token(Tok)) ),
     % print_message( informational, syntac_error(after_expr(Aft)) ).
     % portray_message( force(error), syntax_error(A,B,C,D,E) ).

pfd_portray_message( error, internal(Error) ) :-
	format( 'The following is an internal error.~n', [] ),
	pfd_portray_message( error, Error ).

pfd_portray_message( error, std(Term) ) :-
	print_message( error, Term ).
pfd_portray_message( error, rats(Error,Clause) ) :-
	format( 'ERROR : rational arithmetic error ~m~n', Error ),
	format( '        in ~w~n', Clause  ).
pfd_portray_message( error, probabilistic_method_fails(Term) ) :-
	format( 'ERROR : probabilstic_method/1 failed on~n', [] ),
	format( '        ~w~n', Term  ).
pfd_portray_message( error, construct_domain_fails(Var,Dmn) ) :-
	format( 'ERROR : ~w found instead of value~n', Dmn ),
	format( '        while constructing domain for var ~w~n', Var  ).
pfd_portray_message( error, unkown_label_method(Clause,Method) ) :-
	format( 'ERROR : unknown method ~w in~n', Method ),
	format( '        ~w~n', Clause  ).
pfd_portray_message( error, no_data_for_var(PfdVar,Active,Vals) ) :-
	format( 'ERROR : unknown (pfd) variable ~w with data ~w ~n',
		[PfdVar,Vals] ),
	format( '        while looking in active :~w~n',Active).
pfd_portray_message( error, missing_qvar(QV,Stcs) ) :-
	format( 'ERROR : could not look-up variable ~w', QV ),
	format( '        while looking in static distribuitions :~w~n', Stcs ).

% portray_message( error, B ) :-
     % print_message( force(error), B ), nl,
     % % raise_exception( pfd(error,B) ).
     % % fail.
     % demo.

demo_exception( pfd(exit) ) :- 
	!,
	% ??? abort
	true.
demo_exception( pfd(halt) ) :- 
	!,
	halt.
demo_exception( pfd(Term) ) :- 
	!,
	% write( user_error, pfd_exception(Code) ), 
	% nl( user_error ),
	% trace,
	pfd_portray_message( error, Term ),
	% abort,
	pfd_demo.
demo_exception( reserved(4) ) :- 
	% sicstus tested.
	!,
	% write( in_reserve(4) ), nl,
	halt.
demo_exception( Other ) :- 
	!,
	% write( last_clause_for(Other) ), nl,
	print_message( error, Other ),
	pfd_demo.
% demo_exception( Other ) :- 
	% write( user_error, non_pfd_exception(Other) ),
	% nl( user_error ),
	% demo.
