git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@53 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
		
			
				
	
	
		
			106 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| :- category(attributes).
 | |
| 
 | |
| 
 | |
| 	:- info([
 | |
| 		version is 1.0,
 | |
| 		authors is 'Paulo Moura',
 | |
| 		date is 2000/7/24,
 | |
| 		comment is 'Dynamic attributes dictionary.']).
 | |
| 
 | |
| 
 | |
| 	:- public(attribute/2).
 | |
| 
 | |
| 	:- mode(attribute(?nonvar, ?nonvar), zero_or_more).
 | |
| 
 | |
| 	:- info(attribute/2,
 | |
| 		[comment is 'Returns, by backtracking, all pairs of atribute-values.',
 | |
| 		 argnames is ['Attribute', 'Value']]).
 | |
| 
 | |
| 
 | |
| 	:- public(attributes/1).
 | |
| 
 | |
| 	:- mode(attributes(-list), one).
 | |
| 
 | |
| 	:- info(attributes/1,
 | |
| 		[comment is 'List of all pairs of atribute-values.',
 | |
| 		 argnames is ['Attributes']]).
 | |
| 
 | |
| 
 | |
| 	:- private(attribute_/2).
 | |
| 	:- dynamic(attribute_/2).
 | |
| 
 | |
| 	:- mode(attribute_(?nonvar, ?nonvar), zero_or_more).
 | |
| 
 | |
| 	:- info(attribute_/2,
 | |
| 		[comment is 'Stores attributes values.',
 | |
| 		 argnames is ['Attribute', 'Value']]).
 | |
| 
 | |
| 
 | |
| 	:- public(del_attribute/2).
 | |
| 
 | |
| 	:- mode(del_attribute(?nonvar, ?nonvar), zero_or_more).
 | |
| 
 | |
| 	:- info(del_attribute/2,
 | |
| 		[comment is 'Deletes a matching attribute-value pair.',
 | |
| 		 argnames is ['Attribute', 'Value']]).
 | |
| 
 | |
| 
 | |
| 	:- public(del_attributes/2).
 | |
| 
 | |
| 	:- mode(del_attributes(@term, @term), one).
 | |
| 
 | |
| 	:- info(del_attributes/2,
 | |
| 		[comment is 'Deletes all matching attribute-value pairs.',
 | |
| 		 argnames is ['Attribute', 'Value']]).
 | |
| 
 | |
| 
 | |
| 	:- public(set_attribute/2).
 | |
| 
 | |
| 	:- mode(set_attribute(+nonvar, +nonvar), one).
 | |
| 
 | |
| 	:- info(set_attribute/2,
 | |
| 		[comment is 'Sets an attribute value.',
 | |
| 		 argnames is ['Attribute', 'Value']]).
 | |
| 
 | |
| 
 | |
| 	:- public(set_attributes/1).
 | |
| 
 | |
| 	:- mode(set_attributes(+list), one).
 | |
| 
 | |
| 	:- info(set_attributes/1,
 | |
| 		[comment is 'Sets a list of attribute-value pairs.',
 | |
| 		 argnames is ['Attributes']]).
 | |
| 
 | |
| 
 | |
| 	attribute(Attribute, Value) :-
 | |
| 		::attribute_(Attribute, Value).
 | |
| 
 | |
| 
 | |
| 	attributes(Attributes) :-
 | |
| 		findall(Attribute, ::attribute_(Attribute, _), Attributes).
 | |
| 
 | |
| 
 | |
| 	del_attribute(Attribute, Value) :-
 | |
| 		::retract(attribute_(Attribute, Value)).
 | |
| 
 | |
| 
 | |
| 	del_attributes(Attribute, Value) :-
 | |
| 		::retractall(attribute_(Attribute, Value)).
 | |
| 
 | |
| 
 | |
| 	set_attribute(Attribute, Value) :-
 | |
| 		::retractall(attribute_(Attribute, _)),
 | |
| 		::assertz(attribute_(Attribute, Value)).
 | |
| 
 | |
| 
 | |
| 	set_attributes([]).
 | |
| 
 | |
| 	set_attributes([Attribute-Value| Attributes]) :-
 | |
| 		::retractall(attribute_(Attribute, _)),
 | |
| 		::assertz(attribute_(Attribute, Value)),
 | |
| 		set_attributes(Attributes).
 | |
| 
 | |
| 
 | |
| :- end_category.
 |