Properties.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Christian Jacobi, September 19, 1985 3:33:07 pm PDT 4:15 pm
Christian Jacobi, September 19, 1985 5:50:37 pm PDT
Properties: CEDAR DEFINITIONS =
BEGIN
Implements property list. Uses less memory than Atom's implementation. This module has no protection against concurrent calls of PutProp. Usage is either in sequential applications or with a higher level application monitor giving protection. Other modules must not modify any PropList; a modification of a PropList while Properties is inside its monitor lock can cause disaster.
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
--Reorders list partially; next GetProp of the same prop may be faster
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
END.