Missing Logtalk 2.15.2 library files.

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@826 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
pmoura 2003-05-04 15:52:00 +00:00
parent 52b61e45ed
commit 77b1c99030
2 changed files with 83 additions and 0 deletions

View File

@ -0,0 +1,18 @@
:- category(observer).
:- info([
version is 1.0,
author is 'Paulo Moura',
date is 03/02/09,
comment is 'Smalltalk dependent protocol.']).
:- public(update/1).
:- mode(update(?nonvar), zero_or_one).
:- info(update/1,
[comment is 'Called when an observed object is updated.',
argnames is ['Change']]).
update(_).
:- end_category.

View File

@ -0,0 +1,65 @@
:- category(subject).
:- info([
version is 1.0,
author is 'Paulo Moura',
date is 03/02/09,
comment is 'Smalltalk dependent handling predicates.']).
:- public(changed/0).
:- mode(changed, one).
:- info(changed/0,
[comment is 'Receiver changed in some way. Notify all dependents.']).
:- public(changed/1).
:- mode(changed(?nonvar), one).
:- info(changed/1,
[comment is 'Receiver changed as specified in the argument. Notify all dependents.',
argnames is ['Change']]).
:- public(dependents/1).
:- mode(dependents(-list), one).
:- info(dependents/1,
[comment is 'Returns a list of all dependent objects.',
argnames is ['Dependents']]).
:- private(dependent_/1).
:- dynamic(dependent_/1).
:- mode(dependent_(?object), zero_or_more).
:- info(dependent_/1,
[comment is 'Dependent object table.',
argnames is ['Dependent']]).
:- public(addDependent/1).
:- mode(addDependent(@object), one).
:- info(addDependent/1,
[comment is 'Adds a new dependent object.',
argnames is ['Dependent']]).
:- public(removeDependent/1).
:- mode(removeDependent(?object), zero_or_more).
:- info(removeDependent/1,
[comment is 'Removes a dependent object.',
argnames is ['Dependent']]).
changed :-
self(Self),
forall(::dependent_(Dependent), Dependent::update(Self)).
changed(Change) :-
forall(::dependent_(Dependent), Dependent::update(Change)).
dependents(Dependents) :-
findall(Dependent, ::dependent_(Dependent), Dependents).
addDependent(Dependent) :-
::dependent_(Dependent) ->
true
;
::asserta(dependent_(Dependent)).
removeDependent(Dependent) :-
::retract(dependent_(Dependent)).
:- end_category.