Include Paulo Moura's Logtalk OO LP system
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@53 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
82
Logtalk/library/proto_hierarchy.lgt
Normal file
82
Logtalk/library/proto_hierarchy.lgt
Normal file
@@ -0,0 +1,82 @@
|
||||
|
||||
:- category(proto_hierarchy,
|
||||
implements(proto_hierarchyp)).
|
||||
|
||||
|
||||
:- info([
|
||||
version is 1.0,
|
||||
authors is 'Paulo Moura',
|
||||
date is 2000/7/24,
|
||||
comment is 'Prototype hierarchy predicates.']).
|
||||
|
||||
|
||||
parent(Parent) :-
|
||||
self(Self),
|
||||
extends_object(Self, Parent).
|
||||
|
||||
|
||||
parents(Parents) :-
|
||||
self(Self),
|
||||
findall(Parent, extends_object(Self, Parent), Parents).
|
||||
|
||||
|
||||
ancestor(Ancestor) :-
|
||||
self(Self),
|
||||
ancestor(Self, Ancestor).
|
||||
|
||||
|
||||
ancestor(Self, Ancestor) :-
|
||||
extends_object(Self, Ancestor).
|
||||
|
||||
ancestor(Self, Ancestor) :-
|
||||
extends_object(Self, Parent),
|
||||
ancestor(Parent, Ancestor).
|
||||
|
||||
|
||||
ancestors(Ancestors) :-
|
||||
self(Self),
|
||||
findall(Ancestor, ancestor(Self, Ancestor), Ancestors).
|
||||
|
||||
|
||||
leaf(Leaf) :-
|
||||
self(Self),
|
||||
leaf(Self, Leaf).
|
||||
|
||||
|
||||
leaf(Self, Leaf) :-
|
||||
extends_object(Leaf, Self),
|
||||
\+ extends_object(_, Leaf).
|
||||
|
||||
leaf(Self, Leaf) :-
|
||||
extends_object(Object, Self),
|
||||
leaf(Object, Leaf).
|
||||
|
||||
|
||||
leaves(Leaves) :-
|
||||
self(Self),
|
||||
findall(Leaf, leaf(Self, Leaf), Leaves).
|
||||
|
||||
|
||||
descendant(Descendant) :-
|
||||
self(Self),
|
||||
descendant(Self, Descendant).
|
||||
|
||||
|
||||
descendant(Self, Descendant) :-
|
||||
extends_object(Descendant, Self).
|
||||
|
||||
descendant(Self, Descendant) :-
|
||||
extends_object(Descendant, Self),
|
||||
\+ extends_object(Descendant, Self).
|
||||
|
||||
descendant(Self, Descendant) :-
|
||||
extends_object(Subclass, Self),
|
||||
descendant(Subclass, Descendant).
|
||||
|
||||
|
||||
descendants(Descendants) :-
|
||||
self(Self),
|
||||
findall(Descendant, descendant(Self, Descendant), Descendants).
|
||||
|
||||
|
||||
:- end_category.
|
Reference in New Issue
Block a user