DIRECTORY CD, Rope; CDSymbolicObjects: CEDAR DEFINITIONS = BEGIN CreatePointOb: PROC [dummySize: CD.Number_0] RETURNS [CD.Object]; CreateLineOb: PROC [length: CD.Number, dummyWidth: CD.Number_0] RETURNS [CD.Object]; CreateRectOb: PROC [size: CD.Position] RETURNS [CD.Object]; IsSymbolicOb: PROC [ob: CD.Object] RETURNS [BOOL]; IsPointOb: PROC [ob: CD.Object] RETURNS [BOOL]; IsLineOb: PROC [ob: CD.Object] RETURNS [BOOL]; IsRectOb: PROC [ob: CD.Object] RETURNS [BOOL]; Kind: TYPE = {notSymbolic, point, line, rect}; SymbolicKind: PROC [ob: CD.Object] RETURNS [Kind]; SetOwner: PROC [symInst: CD.Instance, owner: ATOM_NIL]; GetOwner: PROC [symInst: CD.Instance] RETURNS [ATOM]; SetName: PROC [symInst: CD.Instance, name: Rope.ROPE]; GetName: PROC [symInst: CD.Instance] RETURNS [Rope.ROPE]; SetLayer: PROC [symInst: CD.Instance, layer: CD.Layer]; GetLayer: PROC [symInst: CD.Instance] RETURNS [CD.Layer]; Direction: TYPE = {west, south, east, north}; DirectionFromOrient: PROC [o: CD.Orientation] RETURNS [dir: Direction]; OrientFromDirection: PROC [dir: Direction] RETURNS [o: CD.Orientation]; CreateSymInst: PROC [name: Rope.ROPE_NIL, denotes: CD.Rect, dummySize: CD.Number _ 0, layer: CD.Layer _ CD.combined, owner: ATOM _ NIL, approachFrom: Direction _ west] RETURNS [CD.Instance]; Denotes: PROC [symInst: CD.Instance] RETURNS [CD.Rect]; InstEnumerator: TYPE = PROC [inst: CD.Instance] RETURNS [quit: BOOL_FALSE]; EnumerateSymbolicObs: PROC [cellOb: CD.Object_NIL, eachInst: InstEnumerator] RETURNS [quit: BOOL]; FindSymbolicObs: PROC [cellOb: CD.Object_NIL, name: Rope.ROPE] RETURNS [CD.InstanceList]; symbolicRectsClass: PRIVATE READONLY REF CD.ObjectClass; symbolicLineClass: PRIVATE READONLY REF CD.ObjectClass; symbolicPointClass: PRIVATE READONLY REF CD.ObjectClass; END. ^CDSymbolicObjects.mesa (part of ChipNDale) Copyright c 1984, 1985 by Xerox Corporation. All rights reserved. by Christian Jacobi, August 8, 1984 12:41:50 pm PDT last edited Christian Jacobi, November 8, 1985 3:22:29 pm PST --Symbolic objects denote points, vertical and horizontal line segments and rectangles. --These objects can make out the interface. -- It is perfectly ok to create symbolic applications with any means... -- The denoted dimension is: -- Points: lower left point of object, [0, 0] -- Lines: west (left) border of object -- Rects: complete size of object -- The origin lies in [0, 0]; The interrest rect is equal to [0, 0, size.x, size.y]. -- The interrest rect's size is of no consequence for Points or Lines ---Create procedures may create objects of different genre if the parameters suggests --If owner is not NIL it must be registered with CDProperties --I layer=CD.combined means: not yet determined, -- or either: object has more complex functionality --It depends from the application if the layer has meaning --It depends from the application if Direction has meaning... --Lines will be approached from a direction perpendicular to their length. --special procedures for cells --Random order; changes on cellOb while the enumeration may or may not be seen --or may even cause other symbolic to be visited a different number than once. --The instances are the real instances inside cellOb; modifycations would change cellOb --Returns all symbolic objects with name "name" --The instances are the real instances inside cellOb; modifycations would change cellOb --implementors stuff ΚΫ˜codešœ+™+Kšœ Οmœ7™BKšœ5™5Kšœ>™>—K˜šΟk ˜ Kšžœ˜ —K˜KšΠblœžœž œ˜)Kšž˜K˜KšœW™WKšœ+™+™KšœG™GKšœ™Kšœ-™-Kšœ'™'Kšœ!™!KšœT™TKšœE™E—K™KšœU™UKš Οn œžœ žœ žœžœ ˜AKš   œžœ žœžœ žœžœ ˜TKš   œžœžœ žœžœ ˜;K˜Kš   œžœžœ žœžœ˜2K˜Kš   œžœžœ žœžœ˜/Kš  œžœžœ žœžœ˜.Kš  œžœžœ žœžœ˜.K˜Kšœžœ$˜.Kš  œžœžœ žœ˜2K˜K˜Kš  œžœ žœžœžœ˜7š  œžœ žœ žœžœ˜5Kšœ=™=—K˜Kš œžœ žœžœ˜6Kš  œžœ žœ žœžœ˜9K˜Kš œžœ žœžœ˜7š  œžœ žœ žœžœ˜9Kšœ1™1Kšœ4™4K™:—K˜šœ žœ˜-K™=—K˜Kš œžœžœžœ˜GKš œžœžœžœ˜GK˜š  œžœ žœ žœžœžœžœžœžœ"žœžœ ˜ΎK™J—K˜Kš  œžœ žœ žœžœ˜7K™K™K™K˜Kš œžœžœžœ žœžœžœ˜KK˜š  œžœ žœžœžœžœ˜bKšœN™NKšœO™OKšœW™W—K˜š œžœ žœžœ žœžœžœ˜YKšœ/™/KšœW™W—K™K˜K™K˜Kš œžœžœžœžœ ˜8Kš œžœžœžœžœ ˜7Kš œžœžœžœžœ ˜8K˜Kšžœ˜K˜—…—I