home *** CD-ROM | disk | FTP | other *** search
- % out/1, rd/1, in/1
- out(Mes):-object(Obj),message(Id),out(Obj,Id,Mes).
- rd(Mes):-object(Obj),message(Id),rd(Obj,Id,Mes).
- in(Mes):- object(Obj),message(Id),in(Obj,Id,Mes).
-
- % out/2, rd/2, in/2
- out(Id,Mes):-object(Obj),out(Obj,Id,Mes).
- rd(Id,Mes):-object(Obj),rd(Obj,Id,Mes).
- in(Id,Mes):-object(Obj),in(Obj,Id,Mes).
-
- % out/3, rd/3, in/3
- out(Obj,Id,_):-val(Obj,Id,_),!,fail.
- out(Obj,Id,Mes):-saved(Mes,Sent),let(Obj,Id,Sent).
- rd(Obj,Id,Mes):-val(Obj,Id,Mes).
- in(Obj,Id,Mes):-val(Obj,Id,Mes),rm(Obj,Id).
-
- % eval/0, eval/1, eval/2
- eval:-object(Obj),message(Id),eval(Obj,Id).
- eval(Id):-object(O),eval(O,Id).
- eval(Obj,Id):-val(Obj,Id,(Answer:-Goal)),Goal,!,
- saved(Answer,NewAnswer),
- set(Obj,Id,NewAnswer).
-
- % tools
- object(New):-var(New),!,val('$object','$object',New).
- object(New):-atomic(New),let('$object','$object',New).
-
- message(New):-var(New),!,object(O),val(O,'$message',New).
- message(New):-atomic(New),object(O),let(O,'$message',New).
-