<> <> DIRECTORY List, SafeStorage, TypeProps; TypePropsImpl: CEDAR MONITOR IMPORTS List EXPORTS TypeProps = BEGIN Type: TYPE = SafeStorage.Type; AList: TYPE = List.AList; Stuff: TYPE = LIST OF RECORD [type: Type, aList: AList]; stuff: Stuff _ NIL; Put: PUBLIC PROC [type: Type, key: REF ANY, val: REF ANY] = BEGIN s: Stuff; Find: ENTRY PROC = BEGIN FOR s _ stuff, s.rest WHILE s # NIL DO IF s.first.type = type THEN EXIT; ENDLOOP; IF s = NIL THEN stuff _ s _ CONS[[type, NIL], stuff]; END; Find[]; s.first.aList _ List.PutAssoc[key: key, val: val, aList: s.first.aList]; END; Get: PUBLIC PROC [type: Type, key: REF ANY] RETURNS [val: REF ANY] = BEGIN FOR s: Stuff _ stuff, s.rest WHILE s # NIL DO IF s.first.type = type THEN RETURN [List.Assoc[key: key, aList: s.first.aList]]; ENDLOOP; val _ NIL; END; END.