1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
:- category(attributes).
:- info([
version is 1.0,
author 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.
|