<> <> <> <> PropertyLists: CEDAR DEFINITIONS = BEGIN <<>> <> <<>> PropList: TYPE = LIST OF KeyVal; KeyVal: TYPE = RECORD [key, val: REF]; <<>> GetProp: PROC [propList: PropList, prop: REF] RETURNS [REF]; <<--Fetches a value from a property list; NIL if not found>> PutProp: PROC [propList: PropList, prop: REF, val: REF _ NIL] RETURNS [PropList]; <<--Puts a property key value pair on a property list; The property list must be written back.>> <<--A nil val value removes the property>> EachProp: TYPE = PROC [key, val: REF] RETURNS [quit: BOOL_FALSE]; Enumerate: PROC [propList: PropList, proc: EachProp] RETURNS [quit: BOOL]; <<--Enumerates the list>> <<--Changes of the list while the enumeration is in progress may or may not be seen>> END.