<> <> DIRECTORY Atom, Collections, IntFunctions, PairCollections; SetsAndStuffLocking: CEDAR MONITOR LOCKS pml USING pml: LONG POINTER TO MONITORLOCK EXPORTS Collections, IntFunctions, PairCollections = BEGIN OPEN IntFunctions, PairCollections, Collections; UpdateSpaceOther: PUBLIC PROC [s: Space, Update: PROC [Atom.PropList] RETURNS [Atom.PropList]] ~ TRUSTED { Entry: ENTRY PROC [pml: LONG POINTER TO MONITORLOCK] ~ TRUSTED { ENABLE UNWIND => NULL; s.other _ Update[s.other]; RETURN}; Entry[@s.LOCK]; RETURN}; UpdateCollectionClassOther: PUBLIC PROC [class: CollectionClass, Update: PROC [Atom.PropList] RETURNS [Atom.PropList]] ~ TRUSTED { Entry: ENTRY PROC [pml: LONG POINTER TO MONITORLOCK] ~ TRUSTED { ENABLE UNWIND => NULL; class.other _ Update[class.other]; RETURN}; Entry[@class.LOCK]; RETURN}; UpdatePairCollClassOther: PUBLIC PROC [class: PairCollClass, Update: PROC [Atom.PropList] RETURNS [Atom.PropList]] ~ TRUSTED { Entry: ENTRY PROC [pml: LONG POINTER TO MONITORLOCK] ~ TRUSTED { ENABLE UNWIND => NULL; class.other _ Update[class.other]; RETURN}; Entry[@class.LOCK]; RETURN}; UpdateIntFnClassOther: PUBLIC PROC [class: IntFnClass, Update: PROC [Atom.PropList] RETURNS [Atom.PropList]] ~ TRUSTED { Entry: ENTRY PROC [pml: LONG POINTER TO MONITORLOCK] ~ TRUSTED { ENABLE UNWIND => NULL; class.other _ Update[class.other]; RETURN}; Entry[@class.LOCK]; RETURN}; END.