DIRECTORY CD, CDBasics, CDProperties, CDSomeImplementors, TokenIO; CDSomeImplementorsImpl: CEDAR PROGRAM IMPORTS CD, CDBasics, CDProperties, TokenIO EXPORTS CDSomeImplementors = BEGIN SimpleSetOrigin: PUBLIC PROC[ob: CD.Object, new: CD.Position] = BEGIN IF ~ob.class.inDirectory THEN ERROR; CDProperties.PutObjectProp[ob, originProperty, NEW[CD.Position_new]] END; SimpleGetOrigin: PUBLIC PROC[ob: CD.Object] RETURNS [CD.Position] = BEGIN IF ob.class.inDirectory THEN WITH CDProperties.GetObjectProp[ob, originProperty] SELECT FROM pp: REF CD.Position => RETURN [pp^] ENDCASE => NULL; RETURN [ CDBasics.BaseOfRect[CD.InterestRect[ob]] ] END; InternalWriteProperty: PROC [prop: REF, val: REF] = BEGIN p: REF CD.Position = NARROW[val]; TokenIO.WriteInt[p.x]; TokenIO.WriteInt[p.y]; END; InternalReadProperty: PROC [prop: ATOM] RETURNS [val: REF] = BEGIN x: INT = TokenIO.ReadInt[]; y: INT = TokenIO.ReadInt[]; val _ NEW[CD.Position _ [x, y]] END; originProperty: ATOM = $simpleOrigin; [] _ CDProperties.RegisterProperty[originProperty]; CDProperties.InstallProcs[prop: originProperty, new: CDProperties.PropertyProcsRec[ makeCopy: CDProperties.CopyVal, --because we treat the coordinates readonly internalWrite: InternalWriteProperty, internalRead: InternalReadProperty, exclusive: TRUE ] ]; END. <CDSomeImplementorsImpl.mesa (part of ChipNDale) Copyright c 1984, 1985 by Xerox Corporation. All rights reserved. by Ch. Jacobi, September 10, 1984 9:20:09 am PDT last edited by Ch. Jacobi, March 25, 1986 5:28:26 pm PST --we handle the val of the originProperty property as readonly; and may share records Êr˜šœ0™0Jšœ Ïmœ7™BJšœ0™0Jšœ8™8J˜—šÏk ˜ Jšžœ˜Jšœ ˜ Jšœ˜Jšœ˜Jšœ˜—J˜šÐblœžœžœ˜&Jšžœžœ!˜+Jšžœ˜—Jšžœ˜J˜J˜š Ðbnœžœžœžœžœ ˜?Jšž˜JšœU™UJšžœžœžœ˜$Jšœ/žœžœ˜DJšžœ˜—J™š  œžœžœžœ žœžœ ˜CJšž˜šžœž˜šžœ0žœž˜?Jšœžœžœ žœ˜#Jšžœžœ˜——Jšžœžœ˜4Jšžœ˜—J˜šÏnœžœžœžœ˜3Jšž˜Jšœžœžœ žœ˜!Jšœ˜Jšœ˜Jšžœ˜—J˜š ¡œžœžœžœžœ˜