43 lines
		
	
	
		
			798 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			43 lines
		
	
	
		
			798 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- object(root,				% avoid infinite metaclass regression by
							 | 
						||
| 
								 | 
							
									instantiates(root)).	% making the class its own metaclass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									:- private(cv_/1).
							 | 
						||
| 
								 | 
							
									:- dynamic(cv_/1).
							 | 
						||
| 
								 | 
							
									:- mode(cv_(?integer), zero_or_one).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									:- public(cv/1).
							 | 
						||
| 
								 | 
							
									:- mode(cv(?integer), zero_or_one).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									:- public(set_cv/1).
							 | 
						||
| 
								 | 
							
									:- mode(set_cv(+integer), one).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									cv_(0).						% cv_/1 value is stored locally, in this class
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									cv(Value) :-
							 | 
						||
| 
								 | 
							
										cv_(Value).				% retrive cv_/1 value, shared for all instances
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									set_cv(Value) :-
							 | 
						||
| 
								 | 
							
										retractall(cv_(_)),		% retract old cv_/1 value from this class
							 | 
						||
| 
								 | 
							
										asserta(cv_(Value)).	% assert the new value into this class
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- end_object.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- object(instance1,
							 | 
						||
| 
								 | 
							
									instantiates(root)).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- end_object.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- object(instance2,
							 | 
						||
| 
								 | 
							
									instantiates(root)).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- end_object.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- object(instance3,
							 | 
						||
| 
								 | 
							
									instantiates(root)).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- end_object.
							 |