DIRECTORY CDMarkObjects, CD, CDOrient, CDProperties, Rope USING [ROPE, Equal], CDSymbolicObjects; CDMarkObjectsImpl: CEDAR PROGRAM IMPORTS CDProperties, Rope, CDOrient, CDSymbolicObjects EXPORTS CDMarkObjects = BEGIN MarkEnumerator: TYPE = CDMarkObjects.MarkEnumerator; markAtom: PUBLIC ATOM _ $AlignmentMarkOb; markOb: PUBLIC CD.Object _ CDSymbolicObjects.CreateMark[10]; markNameProperty: PUBLIC ATOM _ $SignalName; SetMarkName: PUBLIC PROC [markInstance: CD.Instance, name: Rope.ROPE] = BEGIN CDProperties.PutPropOnInstance[onto: markInstance, prop: markNameProperty, val: name] END; GetMarkName: PUBLIC PROC [markInstance: CD.Instance] RETURNS [name: Rope.ROPE] = BEGIN WITH CDProperties.GetPropFromInstance[from: markInstance, prop: markNameProperty] SELECT FROM r: Rope.ROPE => name _ r; ENDCASE => name _ NIL; END; FindMark: PUBLIC PROC [cellOb: CD.Object_NIL, design: CD.Design_NIL, name: Rope.ROPE] RETURNS [inst: CD.Instance_NIL] = BEGIN Enumerate: MarkEnumerator = { IF Rope.Equal[GetMarkName[markInstance], name] THEN {inst _ markInstance; quit_TRUE} }; [] _ EnumerateMarks[cellOb: cellOb, design: design, proc: Enumerate]; END; GetMarkPosition: PUBLIC PROC [markInstance: CD.Instance] RETURNS [CD.Position] = BEGIN RETURN [CDOrient.MapPoint[ pointInCell: [x: 0, y: 0], cellInstPos: markInstance.location, cellSize: markInstance.ob.size, cellInstOrient: markInstance.orientation ]] END; EnumerateMarks: PUBLIC PROC [cellOb: CD.Object_NIL, design: CD.Design_NIL, proc: MarkEnumerator] RETURNS [quit: BOOL_FALSE] = BEGIN cp: CD.CellPtr; IF cellOb#NIL THEN cp _ NARROW[cellOb.specificRef] ELSE IF design#NIL THEN cp _ design^.actual.first.specific ELSE ERROR; FOR list: CD.InstanceList _ cp.contents, list.rest WHILE (list#NIL AND ~quit) DO IF list.first.ob=markOb THEN { quit _ proc[list.first]; -- do NOT catch errors }; ENDLOOP; END; END. tCDMarkObjectsImpl.mesa Copyright c 1984, 1985 by Xerox Corporation. All rights reserved. Created by: Bob Mayo, June 8, 1984 12:28:34 pm PDT Redesigned by: Jacobi, September 10, 1984 5:04:14 pm PDT Last Edited: Jacobi, November 11, 1985 3:01:16 pm PST --PROC [markInstance: CD.Instance] RETURNS [quit: BOOL_FALSE] --actually finds any position of a real origin Κ˜code– "Cedar" stylešœ™Kšœ Οmœ7™BK™2K™9K™6—K˜šΟk ˜ Kšœ˜Kšžœ˜Kšœ ˜ Kšœ ˜ Kšœžœžœ ˜Kšœ˜—K˜šΠblœžœžœ˜$Kšžœ1˜8Kšžœ˜—Kšžœ˜K˜šœžœ ˜4Kšœ=™=—K˜Kšœ ž œ˜)Kšœžœžœ+˜