DIRECTORY CD, CDViewer, CDMark, CDValue, CDSequencer; CDMarkImpl: CEDAR MONITOR IMPORTS CDValue, CDViewer, CDSequencer EXPORTS CDMark = BEGIN GetMark: PUBLIC PROC [design: CD.Design] RETURNS [pos: CD.DesignPosition_ [0, 0]] = BEGIN x: REF = CDValue.Fetch[boundTo: design, key: $Mark, propagation: design]; IF x#NIL THEN pos _ NARROW[x, REF CD.DesignPosition]^ END; SetMark: PUBLIC PROC [design: CD.Design, pos: CD.DesignPosition] = BEGIN p: REF CD.DesignPosition _ NEW[CD.DesignPosition_pos]; CDValue.Store[boundTo: design, key: $Mark, value: p]; CDViewer.ShowArrow[design, pos] END; SetMarkComm: PROC [comm: CDSequencer.Command] = BEGIN SetMark[comm.design, comm.pos] END; RemoveMarkComm: PROC [comm: CDSequencer.Command] = BEGIN CDViewer.RemoveArrow[comm.design] END; CDValue.EnregisterKey[$Mark]; CDSequencer.ImplementCommand[$ShowMark, SetMarkComm]; CDSequencer.ImplementCommand[$RemoveMark, RemoveMarkComm]; END. ˆCDMarkImpl.mesa (part of Chipndale) Copyright c 1983, 1984 by Xerox Corporation. All rights reserved. by Christian Jacobi November 17, 1983 1:45 pm last edited by Christian Jacobi December 7, 1983 10:14 am --returns always some position, even if there is no mark --This Module is temporary; if Marks will work properly and integrated, --Mark will be exported elsewhere Êǘšœ,™,Jšœ Ïmœ7™BJšœ0™0Jšœ;™;—J˜šÏk ˜ Jšžœ˜Jšœ ˜ Jšœ˜Jšœ˜Jšœ ˜ J˜—šÏn œžœžœ˜Jšžœ ˜'Jšžœ ˜—Jšž˜J˜š Ÿœž œ žœ žœžœ˜SJšœ8™8Jšž˜JšœžœC˜IJš žœžœžœžœžœžœ˜5Jšžœ˜—J˜šŸœž œ žœžœ˜BJšž˜Jš œžœžœžœžœ˜6Jšœ5˜5Jšœ˜Jšžœ˜—J™šŸ œžœ˜/Jšž˜Jšœ˜Jšžœ˜J˜—šŸœžœ˜2Jšž˜Jšœ!˜!Jšžœ˜J˜—Jšœ˜Jšœ5˜5Jšœ:˜:Jšžœ˜J˜JšœG™GJšœ!™!—…—¢ñ