git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@757 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
		
			
				
	
	
		
			47 lines
		
	
	
		
			816 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			816 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
 | 
						|
:- object(class,
 | 
						|
	instantiates(class),
 | 
						|
	specializes(abstract_class)).
 | 
						|
 | 
						|
 | 
						|
	:- info([
 | 
						|
		author 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.
 |