1 % (c) 2016-2019 Lehrstuhl fuer Softwaretechnik und Programmiersprachen,
2 % Heinrich Heine Universitaet Duesseldorf
3 % This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html)
4
5 :- module(performance_messages,
6 [
7 performance_monitoring_on/0,
8 perfmessage/1, perfmessage/2,
9 perfmessagecall/2, perfmessagecall/3,
10 toggle_perfmessages/0
11 ]).
12
13 :- use_module(preferences).
14 :- use_module(error_manager).
15
16 % -------------------------------------------
17
18 :- dynamic performance_monitoring_on/0. % should we use a preference
19 %performance_monitoring_on.
20
21 performance_monitoring_on :- get_preference(performance_monitoring_on,true).
22
23 toggle_perfmessages :- print('TURNING PERF-MESSAGES '),
24 (performance_monitoring_on
25 -> set_preference(performance_monitoring_on,false), print('OFF')
26 ; set_preference(performance_monitoring_on,true), print('ON')),nl.
27
28 perfmessage(M) :- preference(performance_monitoring_on,true),!,
29 format(user_output,'==PERF-MESSAGE==> ~w~n',[M]).
30 perfmessage(_).
31
32 perfmessage(M,Location) :- preference(performance_monitoring_on,true),!,
33 add_warning(performance_message,'==PERF-MESSAGE==> ',M,Location).
34 perfmessage(_,_).
35
36 :- meta_predicate perfmessagecall(*,0).
37 perfmessagecall(M,Call) :- preference(performance_monitoring_on,true),!,
38 format(user_output,'==PERF-MESSAGE==> ~w : ',[M]),
39 call(Call),nl(user_output).
40 perfmessagecall(_,_).
41
42 :- meta_predicate perfmessagecall(*,0,*).
43 perfmessagecall(M,Call,Location) :- preference(performance_monitoring_on,true),!,
44 call(Call),nl(user_output),
45 add_warning(performance_message,'==PERF-MESSAGE==> ',M,Location).
46 perfmessagecall(_,_,_).