git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@53 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
		
			
				
	
	
		
			47 lines
		
	
	
		
			817 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			817 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| :- object(class,
 | |
| 	instantiates(class),
 | |
| 	specializes(abstract_class)).
 | |
| 
 | |
| 
 | |
| 	:- info([
 | |
| 		authors is 'Paulo Moura',
 | |
| 		version is 1.0,
 | |
| 		date is 2000/4/22,
 | |
| 		comment is 'Instantiation root and default metaclass for all classes.']).
 | |
| 
 | |
| 
 | |
| 	:- public(new/1).
 | |
| 	:- mode(new(+object), zero_or_one).
 | |
| 
 | |
| 	:- public(delete/1).
 | |
| 	:- mode(delete(+object), zero_or_one).
 | |
| 
 | |
| 	:- public(instances/1).
 | |
| 	:- mode(instances(-list), one).
 | |
| 
 | |
| 
 | |
| 	new(Object) :-
 | |
| 		self(Self),
 | |
| 		create_object(Object, [instantiates(Self)], [], []).
 | |
| 
 | |
| 
 | |
| 	delete(Object) :-
 | |
| 		self(Self),
 | |
| 		instantiates_class(Object, Self),
 | |
| 		\+ instantiates_class(_, Object),
 | |
| 		\+ specializes_class(_, Object),
 | |
| 		abolish_object(Object).
 | |
| 
 | |
| 
 | |
| 	instances(Instances) :-
 | |
| 		self(Self),
 | |
| 		findall(Instance, instantiates_class(Instance, Self), Instances).
 | |
| 
 | |
| 
 | |
| 	abstract_class :-
 | |
| 		fail.
 | |
| 
 | |
| 
 | |
| :- end_object.
 |