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. DCDMarkImpl.mesa (part of Chipndale) 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šœ,™,Jšœ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šœ!™!—…—¢