root/tags/lgt2311/library/monitor.lgt

Revision 3687, 1.4 KB (checked in by pmoura, 21 months ago)

Code reformating.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1
2:- category(monitor,
3    implements(monitorp)).
4
5    :- info([
6        version is 1.1,
7        author is 'Paulo Moura',
8        date is 2004/3/31,
9        comment is 'Monitor predicates.']).
10
11    :- private(spy_point_/4).
12    :- dynamic(spy_point_/4).
13    :- mode(spy_point_(?event, ?object, ?callable, ?object), zero_or_more).
14    :- info(spy_point_/4, [
15        comment is 'Stores current spy points.',
16        argnames is ['Event', 'Object', 'Message', 'Sender']]).
17
18    monitor_activated :-
19        self(Self),
20        once(current_event(_, _, _, _, Self)).
21
22    activate_monitor :-
23        self(Self),
24        abolish_events(before, _, _, _, Self),
25        abolish_events(after, _, _, _, Self),
26        forall(
27            ::spy_point_(Event, Object, Message, Sender),
28            define_events(Event, Object, Message, Sender, Self)).
29
30    suspend_monitor :-
31        self(Self),
32        abolish_events(before, _, _, _, Self),
33        abolish_events(after, _, _, _, Self).
34
35    reset_monitor :-
36        self(Self),
37        abolish_events(before, _, _, _, Self),
38        abolish_events(after, _, _, _, Self),
39        ::retractall(spy_point_(_, _, _, _)).
40
41    spy_point(Event, Object, Message, Sender) :-
42        ::spy_point_(Event, Object, Message, Sender).
43
44    set_spy_point(Event, Object, Message, Sender) :-
45        ::retractall(spy_point_(Event, Object, Message, Sender)),
46        once((var(Event); Event = before; Event = after)),
47        ::assertz(spy_point_(Event, Object, Message, Sender)).
48
49    del_spy_points(Event, Object, Message, Sender) :-
50        ::retractall(spy_point_(Event, Object, Message, Sender)).
51
52:- end_category.
Note: See TracBrowser for help on using the browser.