root/tags/lgt2210/library/subject.lgt

Revision 404, 1.6 KB (checked in by pmoura, 6 years ago)

Corrected syntax error in the info/1 directive.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1
2:- category(subject).
3
4    :- info([
5        version is 1.0,
6        author is 'Paulo Moura',
7        date is 03/02/09,
8        comment is 'Smalltalk dependent handling predicates.']).
9
10    :- public(changed/0).
11    :- mode(changed, one).
12    :- info(changed/0,
13        [comment is 'Receiver changed in some way. Notify all dependents.']).
14
15    :- public(changed/1).
16    :- mode(changed(?nonvar), one).
17    :- info(changed/1,
18        [comment is 'Receiver changed as specified in the argument. Notify all dependents.',
19         argnames is ['Change']]).
20
21    :- public(dependents/1).
22    :- mode(dependents(-list), one).
23    :- info(dependents/1,
24        [comment is 'Returns a list of all dependent objects.',
25         argnames is ['Dependents']]).
26
27    :- private(dependent_/1).
28    :- dynamic(dependent_/1).
29    :- mode(dependent_(?object), zero_or_more).
30    :- info(dependent_/1,
31        [comment is 'Dependent object table.',
32         argnames is ['Dependent']]).
33
34    :- public(addDependent/1).
35    :- mode(addDependent(@object), one).
36    :- info(addDependent/1,
37        [comment is 'Adds a new dependent object.',
38         argnames is ['Dependent']]).
39
40    :- public(removeDependent/1).
41    :- mode(removeDependent(?object), zero_or_more).
42    :- info(removeDependent/1,
43        [comment is 'Removes a dependent object.',
44         argnames is ['Dependent']]).
45
46    changed :-
47        self(Self),
48        forall(::dependent_(Dependent), Dependent::update(Self)).
49
50    changed(Change) :-
51        forall(::dependent_(Dependent), Dependent::update(Change)).
52
53    dependents(Dependents) :-
54        findall(Dependent, ::dependent_(Dependent), Dependents).
55
56    addDependent(Dependent) :-
57        ::dependent_(Dependent) ->
58            true
59            ;
60            ::asserta(dependent_(Dependent)).
61
62    removeDependent(Dependent) :-
63        ::retract(dependent_(Dependent)).
64
65:- end_category.
Note: See TracBrowser for help on using the browser.