DIRECTORY NodeProps USING [GetProp, NullCopy, NullRead, NullWrite, PutProp, Register], TEditLocks USING [LockRecord, LockRef], TEditLocksPrivate USING [], TextNode USING [Node]; TEditLocksPrivateImpl: CEDAR MONITOR IMPORTS NodeProps EXPORTS TEditLocksPrivate = BEGIN OPEN TEditLocks; lastRoot: TextNode.Node _ NIL; lastLock: LockRef _ NIL; GetLock: PUBLIC ENTRY PROC [root: TextNode.Node] RETURNS [lock: LockRef] = { ENABLE UNWIND => NULL; IF root = NIL THEN RETURN [NIL]; IF root = lastRoot THEN RETURN [lastLock]; lastRoot _ root; lock _ lastLock _ NARROW[NodeProps.GetProp[root, $DocumentLock]]; IF lastLock # NIL THEN RETURN; lock _ lastLock _ NEW[LockRecord]; NodeProps.PutProp[root, $DocumentLock, lock]; }; NodeProps.Register[$DocumentLock, NodeProps.NullRead, NodeProps.NullWrite, NodeProps.NullCopy]; END. θTEditLocksPrivateImpl.mesa Copyright c 1985, 1986 by Xerox Corporation. All rights reserved. Edited by Paxton on October 11, 1982 10:27 am Doug Wyatt, September 2, 1986 4:38:16 pm PDT Don't copy document lock or big trouble. Κk˜codešœ™Kšœ Οmœ7™BKšœ-™-K™,—K˜šΟk ˜ Kšœ žœ=˜LKšœ žœ˜'Kšœžœ˜Kšœ žœ˜—K˜KšΟnœžœž˜$Kšžœ ˜Kšžœ˜Kšœžœžœ ˜K˜Kšœžœ˜Kšœžœ˜K˜š Ÿœžœžœžœžœ˜LKšžœžœžœ˜Kš žœžœžœžœžœ˜ Kšžœžœžœ ˜*K˜Kšœžœ)˜BKšžœ žœžœžœ˜Kšœžœ ˜"Kšœ-˜-K˜—K˜šœ_˜_K™(K˜—Kšžœ˜—…—8‹